Fluxos assíncronos usando o C# 8.0 e .NET Core 3.0


O C#8.0 apresenta fluxos assíncronos, que modelam uma fonte de dados de streaming quando os elementos no fluxo de dados podem ser recuperados ou gerados de forma assíncrona. Os fluxos assíncronos contam com novas interfaces introduzidas no .NET Standard 2.1 e implementadas no .NET Core 3.0 para fornecer um modelo de programação natural para fontes de dados de streaming assíncrono.

O tipo IAsyncEnumerable<T> é uma nova versão assíncrona de IEnumerable<T>. A linguagem permite o uso de await foreach em IAsyncEnumerable<T> para consumir seus elementos e o uso de yield return neles para produzir elementos.

O exemplo a seguir demonstra a produção e o consumo de fluxos assíncronos. A instrução foreach é assíncrona e usa yield return para produzir um fluxo assíncrono para chamadores. Esse padrão (usar yield return) é o modelo recomendado para a produção de fluxos assíncronos.



Além de poder await foreach, você também pode criar iteradores assíncronos, por exemplo, um iterador que retorne um IAsyncEnumerable/IAsyncEnumerator em que é possível aplicar await e yield. Para objetos que precisam ser descartados, você pode usar IAsyncDisposable, que vários tipos BCL implementam, como Stream e Timer.


.net · ‎core · ‎3.0 · ‎c · ‎8.0 · ‎async

Última atualização: 23/09/2019 às 06:34


  • Buscar