我从不同的地址下载了一堆字符串,我需要尽快下载它们。所以我使用了10个DownloadStringAsync和1个DownloadString。
简化代码如下所示:
...
foreach(...)
{
using (WebClient client = new WebClient())
{
if (asyncworkers < 10)
{
client.DownloadStringCompleted += Done;
client.DownloadStringAsync(uri);
asyncworkers++;
}else{
string data = client.DownloadString(uri);
ProcessData(data);
}
}
}
...
private void Done(...)
{
ProcessData(e.Result);
asyncworkers--;
}
问题是e.Result
中的Done
不时完整。当我只使用DownloadString
或DownloadStringAsync
时,它很可能总是完成。
这是正常的,我只是在它不完整时重新下载它或者我写错了吗?如果它是错的,我将如何迫使它等待,直到10 DownloadStringAsync
中的一个完成它的工作?
感谢。