.NET 6 С# получить результат из List<Task> не работает

У меня есть часть моего 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;
}

Но когда я пытаюсь получить результат от каждой задачи, свойства «Результат» не существует.

Что мне не хватает?

var results = await Task.WhenAll(items.Select(PerformTask));
Johnathan Barclay 13.02.2023 12:10
Конечные и Readonly классы в PHP
Конечные и Readonly классы в PHP
В прошлом, когда вы не хотели, чтобы другие классы расширяли определенный класс, вы могли пометить его как final.
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
Если вы уже умеете работать с React, создание мобильных приложений для iOS и Android - это новое приключение, в котором вы сможете применить свои...
БЭМ: Конвенция об именовании CSS
БЭМ: Конвенция об именовании CSS
Я часто вижу беспорядочный код CSS, особенно если проект большой. Кроме того, я совершал эту ошибку в профессиональных или личных проектах и...
Революционная веб-разработка ServiceNow
Революционная веб-разработка ServiceNow
В быстро развивающемся мире веб-разработки ServiceNow для достижения успеха крайне важно оставаться на вершине последних тенденций и технологий. По...
Как добавить SEO(Search Engine Optimization) в наше веб-приложение и как это работает?
Как добавить SEO(Search Engine Optimization) в наше веб-приложение и как это работает?
Заголовок веб-страницы играет наиболее важную роль в SEO, он помогает поисковой системе понять, о чем ваш сайт.
Конфигурация Jest в angular
Конфигурация Jest в angular
В этой статье я рассказываю обо всех необходимых шагах, которые нужно выполнить при настройке jest в angular.
2
1
75
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Result является свойством общего Task<TResult> . Если PerformTask возвращает Task какого-то типа, создайте List<Task<TypeReturnedByPerformTask>>. Также вы сможете получить результаты без .Result вызова (существует общая перегрузка of Task.WhenAll, которая возвращает Task массива типа результата):

List<Task<TypeReturnedByPerformTask>> tasks = ...;
// ...
TypeReturnedByPerformTask[] results = await Task.WhenAll(tasks);

Спасибо, именно этого мне и не хватало!

user729400 13.02.2023 12:34

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