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 заканчивает свою работу? Благодарю.

0 ответов

Другие вопросы по тегам