日期:2014-05-19  浏览次数:20764 次

求此种情况下的线程解决方案
相信大家都用过迅雷下载软件吧,可以同时下载线程以内的多个任务;我要做个类似的功能,请大家给出详细方案.
1.可以同时运行多个任务,
2.而每个任务调用同一个方法,
3.每个任务可能是一辈子都无法执行完的任务,也就是说调用的那个方法,执行起来是永远不会停止的.

请各位高手给出解决方案,如果上面第3条有问题,以至于无法提供解决方案,可以更改.但前二条是可以实现的,但我不知道如何解决.当然要用到线程了.
当然能够提供点代码加以解释,那就感激涕零了.

------解决方案--------------------
首先创建一个执行任务的Class,然后每增加一个Task,就创建一个Thread,在线程里面实例一个Class来运行Task;
------解决方案--------------------
您可以将每个下载事件作成一个几个类,因为在网络上下载东西是要考虑httpReponse,httpRequest,Proxy(代理)等,所以您可以分成多个类来写:
第一个类描述下载事物的具体信息
第二个类描述下载过程中所发生的事件,比如进度条的增长和窗体上所发生的比如控件的显示名称的改变(label的Text)
第三个类描述下载完成所发生的事件
然后在每一个任务来之前定义一个触发,然后就是foreach循环
在foreach循环中要考虑哪个是新增加的任务,哪个是已经结束的任务.
------解决方案--------------------
改用

object myLock=new object();

lock(myLock)
{
// do whatever you want to do
}


必须用delegate 来更新UI