Асинхронный итератор в C#
Метод с модификатором async и оператором yield return строит асинхронную последовательность. Между элементами в нём можно подождать таймер, диск или сеть.
Потребитель получает элемент только когда до него дошёл генератор. Следующий элемент в этот момент может быть ещё не готов.
Генератор отдаёт две строки, между ними короткая пауза. Цикл запрашивает их по одной:
static async IAsyncEnumerable<string> WordsAsync()
{
yield return "a";
await Task.Delay(1);
yield return "b";
}
await foreach (string w in WordsAsync())
{
Console.WriteLine(w); // выведет "a", "b"
}
Отдайте из генератора числа 5, 10 и 15 с короткой паузой между ними и выведите их сумму.