У меня есть часть моего API ASP.NET Core 6, где я подключаюсь к другой службе. Это объемная операция (возможно, от 2 до 4 операций), и я хочу выполнять ее параллельно.
Чтобы добиться этого, я пытаюсь воспользоваться такими задачами, как это:
List<Task> tasks = new List<Task>();
foreach(var item in items)
{
tasks.Add(PerformTask(item));
}
await Task.WhenAll(tasks);
foreach(var task in tasks)
{
task.Result;
}
Но когда я пытаюсь получить результат от каждой задачи, свойства «Результат» не существует.
Что мне не хватает?
Result является свойством общего Task<TResult> . Если PerformTask возвращает Task какого-то типа, создайте List<Task<TypeReturnedByPerformTask>>. Также вы сможете получить результаты без .Result вызова (существует общая перегрузка of Task.WhenAll, которая возвращает Task массива типа результата):
List<Task<TypeReturnedByPerformTask>> tasks = ...;
// ...
TypeReturnedByPerformTask[] results = await Task.WhenAll(tasks);
Спасибо, именно этого мне и не хватало!
var results = await Task.WhenAll(items.Select(PerformTask));