Метод 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