List<string> list=new List<string();
一个list里面放很多图片地址。如http://a.jpg如何使用多线和完成下载 现在我是不知道如何控制不下载重复使用lock答不到我要求啊
while (i < list.Count)//如果是两个线程,一访问都可能是0
{
Debug.WriteLine(i.ToString()+"--"+Thread.CurrentThread.Name);
lock (_cc)
{
url= list[i++];
}
Download(url);//这里下载的时候,会有延迟!!!所以需要多个线程来做,又不下载重复
}
while (i < list.Count)//如果是两个线程,一访问都可能是0
{
Debug.WriteLine(i.ToString()+"--"+Thread.CurrentThread.Name);
lock (_cc)
{
url= list[i++];
}
Download(url);//这里下载的时候,会有延迟!!!所以需要多个线程来做,又不下载重复
}//DownLoad()函数中创建线程,用线程去下载就好了;
public void start() {
DataRow row = null; while (!completed)
{
lock (_cc)
{
Debug.WriteLine(i.ToString() + "--" + Thread.CurrentThread.Name);
if (i == Table.Rows.Count)
{
completed = true;
break ;
}
row = Table.Rows[i++];
}
if (row == null)
return;
message(row["Item_Code"] as string, row["Url"] as string, GetHtml(row["Url"] as string),i);
}
}加了一个变量完成了虽然不怎么好。希望对以后的有人用吧。
while (list.Count > 0)
{
取出最后一条URL
从list中移除最后一条URL
解锁下载URL
}
谢谢你,不过我一个list有1000张图片,那我不是得弄1000个线程吗?
谁知道可以使用Thread.Pool完成我的问题吗?
或者每下载一个,就从列表里把这条去掉,放到另一个列表里
谢谢,我知道,但是我只想用两个new thread,然后他们在while中跑起来,拿到最后一个为止!!!