ExpertiDict

C# · Avançado · Inglês · Técnico

IAsyncEnumerable

/ˌaɪ əˈsɪŋk ɪˈnumɚəbəl/substantivo

Interface de sequência assíncrona: cada item pode demorar, e o consumo usa await foreach. Combina com métodos async que usam yield return para produzir dados sob demanda.

Onde usar

Aparece ao paginar uma API, ler linhas de um banco ou consumir um stream de eventos sem carregar tudo na memória. Marque o CancellationToken do iterador com [EnumeratorCancellation] para poder cancelar a iteração.

Em código

async IAsyncEnumerable<int> ContarAsync()
{
  for (int i = 1; i <= 3; i++)
    { await Task.Delay(100); yield return i; }
}
await foreach (var n in ContarAsync())
  Console.WriteLine(n);

Exemplos

The endpoint streams results as an IAsyncEnumerable.

O endpoint transmite os resultados como um IAsyncEnumerable.

Iterate it with await foreach.

Itere com await foreach.

Cuidado

Não confunda com Task<IEnumerable<T>>: essa devolve tudo de uma vez, enquanto IAsyncEnumerable entrega item a item conforme ficam prontos.

Sinônimos

async stream

Veja também

Todos os termos de C#