Я использую TPL для сканирования набора Urls и последующей обработки.Отменить отмену задач и задач в Task.WaitAll?
for (int i = 0; i < list.Count; i++)
{
var tuple = list[i];
string url = tuple.Item2;
tasks[i] = httpClient.GetStringAsync(url).
ContinueWith(task => {
{
......
});
}
Task.WaitAll(tasks);
Вопрос заключается в том, что на Task.WaitAll
заявление, кажется, он будет часто бросать исключения, потому что задача была отменена. Я понимаю, что httpClient.GetStringAsync
может не всегда обеспечивать успех, поэтому я хочу добавить логику повтора в httpClient.GetStringAsync
, когда происходят исключения. Каким будет правильный подход к этому?
Если повторная попытка не удалась, вы все еще хотите исключение? – i3arnon
@ I3arnon: сделаю. Но тогда исключение будет передано как AggregateException в Task.WaitAll. Это правильно? – derekhh
Да, потому что задача может содержать несколько исключений. Если вы будете «ждать Task.WhenAll», который был создан для 'async-await', тогда вы получите фактическое исключение внутри (первое из них). – i3arnon