Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
1165 of 1492 menu
◀ ▶

Метод WhenEach

Task.WhenEach появился в .NET 9: await foreach обходит задачи, когда они завершаются. Порядок выдачи не совпадает с порядком аргументов. Все разом - WhenAll, первая - WhenAny.

Синтаксис

await foreach (Task<int> item in Task.WhenEach(t1, t2)) { int value = await item; }

Пример

Давайте посчитаем две уже готовые задачи:

using System; using System.Threading.Tasks; class Program { static async Task Main() { int count = 0; await foreach (Task<int> item in Task.WhenEach( Task.FromResult(1), Task.FromResult(2))) { await item; count++; } bool res = count == 2; Console.WriteLine(res); } }

Результат выполнения кода:

True

Пример

Давайте суммируем значения из двух задач:

using System; using System.Threading.Tasks; class Program { static async Task Main() { int sum = 0; await foreach (Task<int> item in Task.WhenEach( Task.FromResult(1), Task.FromResult(2))) { sum += await item; } Console.WriteLine(sum); } }

Результат выполнения кода:

3

Пример

Давайте обработаем строковые задачи:

using System; using System.Threading.Tasks; class Program { static async Task Main() { int count = 0; await foreach (Task<string> item in Task.WhenEach( Task.FromResult("abcde"), Task.FromResult("12345"))) { await item; count++; } Console.WriteLine(count); } }

Результат выполнения кода:

2

Смотрите также

  • метод WhenAll,
    массив после всех
  • метод WhenAny,
    только первая
  • метод FromResult,
    готовые элементы набора
  • Task,
    класс, где объявлен WhenEach
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить