TGViewer
StepOne | Степан Минин StepOne | Степан Минин @steponeit · 3.27K subscribers
Post #260 2.4K
А вы используете IAsyncEnumerable?

У меня сложилось впечатление, будто после релиза C# 8 про эту штуку все забыли, поэтому решил сегодня про неё вспомнить)

Этот тип данных решал задачу потребления и создания асинхронных потоков данных.

То есть, таких потоков, в которых данные получают или генерируют асинхронно.

Напомню, что если у нас есть некоторый метод:

static async IAsyncEnumerable<Data> GetData()
{
// ...
}


То в таком случае, можно перебрать возвращаемое значение следующим образом:

await foreach (var item in GetData())
{
// ...
}


Но что в таком случае будет наполнять тело метода GetData?

Обычно, асинхронные потоки удобны в том случае, когда данные представлены в виде набора батчей, но нам необходимо эмулировать целостность потока.

То есть, всё сразу предъявить мы не можем, но способны заявить об этой возможности.

Например, есть многостраничный список с фиксированным количеством элементов на одной странице.

Тогда, внутри метода GetData будет скачиваться одна страница и разворачиваться в плоский поток до тех пор, пока есть следующая страница:

static async IAsyncEnumerable<Data> GetData()
{
var page = 1;
while (page <= 10)
{
var items = await Fetch(page);
foreach (var item in items)
yield return item;
page++;
}
}


В вашей практике встречается потребность в IAsyncEnumerable?
  • 👍 25
  • 🔥 6
  • 🤯 5
  • 💯 1
More from @steponeit
  1. Sep 29, 2026Рассказал как автоматизировал сборку лексера компилятором для своего языка программировани…
  2. Sep 28, 2026Пошутил про джавистов в прямом эфире 😅 Шарпизм победил окончательно и бесповоротно!
  3. Sep 27, 2026Post #860
  4. Sep 25, 2026Рассказал как я добавил в HydraScript объекты и методы без классов и сделал протоколы. Стр…
  5. Sep 22, 2026Post #858
  6. Sep 21, 2026Post #857
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →