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

请教循环中的线程问题
我做了一个简单的下载程序,用一个线程循环下载一个文件列表
用下面的方式   不能正确显示下载状态   我对线程不是很了解
  请各位高手指点   该怎样做

System.Threading.Thread   thread001   =   null;
DownloadClass   dc   =   new   DownloadClass();   //下载类                                    
System.Threading.ThreadStart   startDownload   =   new   System.Threading.ThreadStart(dc.DownloadFile);//dc.DownloadFile是下载类中的函数
for   (int   i   =   0;   i   <   rc.Count;   i++)
{
thread001   =   new   System.Threading.Thread(startDownload);
thread001.Start();
  }

------解决方案--------------------
有没有冲突要看你的DownloadFile方法是怎么实现的。如果有冲突的话,可以使用互斥锁。
------解决方案--------------------
检查DownloadFile到本地是不是路径一样
------解决方案--------------------
Monitor用法

try
{
Monitor.Enter(this)
// 公共资源处理代码
}
finally
{
Monitor.Exit(this)
}

至于显示下载状态不正确,你的需求说明不是很清楚,无法解释

------解决方案--------------------
这种下载的可以考虑一下线程池
http://www.cnblogs.com/Bird/archive/2007/03/12/671880.html