DownloadStringAsync не возвращает полную строку
Я загружаю кучу строк с разных адресов, и мне нужно скачать их как можно быстрее. Поэтому я использую 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
заканчивает свою работу? Благодарю.