#c# #asynchronous #task
#c# #асинхронный #задача
Вопрос:
Ищу способ получить значения из коллекции задач. Для exmaple у меня есть
List<Task<string>> strings
и я ищу способ обменять ее на
List<string> results
Единственный приемлемый способ, который я нашел, — это запустить цикл foreach и использовать «await» или «result» для каждого элемента задачи, но мне интересно, есть ли какой-нибудь способ сделать это более простым, например, Task.WaitAll() но со сбором результатов?
Ответ №1:
Вы можете использовать WhenAll
Создает задачу, которая завершится, когда завершатся все объекты задачи в перечислимой коллекции.
List<Task<string>> tasks = ...
var results = await Task.WhenAll(tasks);
Или, если по какой-то причине вы застряли в 2008-х годах, вы можете использовать Task.WaitAll
и спроецировать результаты в список
Ожидает завершения выполнения всех предоставленных объектов задачи.
Комментарии:
1. 2008 позвонил и сказал, что он не видел
Task.WaitAll
или что-то в этом роде. Платформа .NET Framework 4.0 была выпущена в апреле 2010 года. 😃