我从不同的地址下载了一堆字符串,我需要尽快下载它们。所以我使用 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
完成它的工作?谢谢。