C# · Avançado · Inglês · Técnico
IAsyncEnumerable
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