Перебор await foreach в C#
Оператор await foreach на каждом шаге ждёт следующий элемент через MoveNextAsync. Поток в этом ожидании свободен.
В конце перечислитель освобождается вызовом DisposeAsync, даже если цикл вышел раньше.
Сложим числа из асинхронной последовательности:
static async IAsyncEnumerable<int> TwoAsync()
{
yield return 10;
yield return 20;
}
int sum = 0;
await foreach (int v in TwoAsync())
{
sum += v;
}
Console.WriteLine(sum); // выведет 30
Склейте строки "east" и "west" из асинхронной последовательности и выведите результат без пробела.