Capítulo 3. Flujos asíncronos

Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com

Los flujos asíncronos son una forma de recibir asíncronamente múltiples elementos de datos. Están construidos sobre enumerables asíncronos (IAsyncEnumerable<T>). Un enumerable asíncrono es una versión asíncrona de un enumerable; es decir, puede producir elementos bajo demanda para un consumidor, y cada elemento puede producirse de forma asíncrona.

Me resulta útil contrastar los flujos asíncronos con otros tipos que pueden resultarme más familiares y considerar las diferencias. Esto me ayuda a recordar cuándo utilizar flujos asíncronos y cuándo serían más apropiados otros tipos.

Flujos asíncronos y tarea<T>

El enfoque asíncrono estándar de con Task<T> sólo es suficiente para manejar asíncronamente un único valor de datos. Una vez que se completa un determinado Task<T>, eso es todo; un único Task<T> no puede proporcionar más de un valor de T a sus consumidores. Incluso si T es una colección, el valor sólo puede proporcionarse una vez. Consulta "Introducción a la programación asíncrona" y el Capítulo 2 para saber más sobre el uso de async con Task<T>.

Al comparar Task<T> con los flujos asíncronos, éstos se parecen más a los enumerables. En concreto, un IAsyncEnumerator<T> puede proporcionar cualquier número de valores T, de uno en uno. Al igual que IEnumerator<T>, un IAsyncEnumerator<T> puede tener una longitud infinita.

Streams asíncronos ...

Get Libro de cocina de la concurrencia en C#, 2ª edición now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.