TGViewer
.NET Разработчик .NET Разработчик @netdeveloperdiary · 6.76K subscribers
Post #1789 1.68K
День 1456. #ЗаметкиНаПолях
Используем Асинхронные Потоки в .NET Framework
Хотя IAsyncEnumerable доступен только в C#8 и поддерживается в .NET Core 3.x и .NET Standard 2.1, это вовсе не означает, что вы не можете использовать эту функцию в .NET Core 2.x или .NET Framework.

Рассмотрим следующий (не компилирующийся) код в проекте .NET 4.7 и попробуем заставить его работать:
async IAsyncEnumerable<string> GetAsync()
{
for (var i = 0; i < 20; i++)
{
var item = await ReadAsync(i);
yield return item;
}
}

async Task<string> ReadAsync(int i)
{
await Task.Delay(100);
return $"Count {i}";
}

Проект .NET Standard 2.0 не знает об интерфейсе IAsyncEnumerable. Поэтому первое, что нам нужно сделать, это установить NuGet-пакет Microsoft.Bcl.AsyncInterfaces.

Теперь компилятор находит интерфейс IAsyncEnumerable, но Visual Studio по-прежнему жалуется, потому что выбранная версия языка C#7.3, а асинхронные потоки — это функция C#8.

Мы можем это исправить, обновив файл .csproj проекта и указав компилятору использовать C#8 в качестве версии языка:
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
…
<LangVersion>8</LangVersion>
</PropertyGroup>

Подробнее об использовании новых функций языка C# на старых платформах в этом посте.

Источник: https://bartwullems.blogspot.com/2020/01/asynchronous-streams-using.html
  • 👍 7
More from @netdeveloperdiary
  1. Oct 13, 2026День 2813. #ЗаметкиНаПолях #Async Ещё Раз Про Async/Await в C#. Часть 1 1. Почему существу…
  2. Oct 12, 2026День 2812. #Карьера #AI Как Разработчикам Оставаться Полезными, Когда Код Пишет ИИ? По мер…
  3. Oct 11, 2026День 2811. #ВопросыНаСобеседовании Марк Прайс предложил свой набор из 60 вопросов (как тех…
  4. Oct 10, 2026День 2810. #ЧтоНовенького #VSCode Более Быстрый и Лёгкий C# Dev Kit Мы, разработчики, люби…
  5. Oct 9, 2026День 2809. #Карьера 5 Навыков, Которые Помогут Быстрее Стать Сеньором. Окончание Начало 3.…
  6. Oct 8, 2026День 2808. #Карьера 5 Навыков, Которые Помогут Быстрее Стать Сеньором. Начало В ИТ есть се…
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 →