Существует метод, который получает ответ сервера с
var response = (HttpWebResponse)await request.GetResponseAsync();
Есть дополнительный код для настройки запроса. Я завернул это в асинхронный метод. Этот метод принимает URL в качестве параметра. Вызов этого метода снова оборачивается методом, который создает фактический URL.
Представьте, что последний метод называется следующим образом:
string resultString = await GetResultString(parameter);
Тогда возникла следующая проблема: Я хочу отправить несколько запросов одновременно. У меня есть список параметров. Я сделал это так:
var tasks = new List<Task<string>>();
foreach(parameter in parameters)
{
tasks.Add(GetResultString(parameter));
}
List<string> resultStrings = await TaskEx.WhenAll(tasks);
Это тоже отлично работает. Но количество запросов является переменным. Так что это может быть 10 запросов. Но также возможно, что вы запускаете 10.000 запросов или даже 100.000. Поэтому я подумал о мониторинге прогресса в индикаторе выполнения. Но как я мог это сделать? Я уже посмотрел на этот фрагмент кода, но я не могу понять, как я мог бы использовать это для своего кода. Мне нужно поднять событие, каждый раз, когда задача завершена. Но как, когда нет никакого обратного вызова, когда задача завершена?
Спасибо и всего наилучшего
PS: может кто-нибудь сказать мне, как использовать для копирования и вставки кода, не ставя четыре пробела перед каждой строкой кода? Я не мог получить никакой помощи от продвинутой помощи. Я просто не могу заставить это работать. И мне жаль, что мой английский не слишком совершенен. Я немец. : -)