C# · Avançado · Inglês · Técnico
Channel
Fila assíncrona e thread-safe de System.Threading.Channels para o padrão produtor-consumidor. Um lado escreve itens, o outro lê com await, com suporte a limite de capacidade.
Onde usar
Aparece em pipelines de processamento e serviços em segundo plano que recebem trabalho de várias fontes. Um canal limitado aplica backpressure: o produtor espera quando a fila enche, evitando consumir toda a memória.
Em código
using System.Threading.Channels;
var ch = Channel.CreateBounded<int>(10);
await ch.Writer.WriteAsync(1);
ch.Writer.Complete();
var r = ch.Reader;
await foreach (var n in r.ReadAllAsync())
Console.WriteLine(n);Exemplos
The producer writes to a bounded Channel.
O produtor escreve em um Channel limitado.
Complete the channel so the reader can finish.
Complete o canal para o leitor poder terminar.
Cuidado
Não esqueça de chamar Writer.Complete(): o consumidor que lê com ReadAllAsync nunca termina.
Sinônimos
fila assíncrona