Channel<T> — async. BlockingCollection<T> — blocking.
Channel<T>:
BlockingCollection<T>:
1// Channel2var channel = Channel.CreateBounded<int>(100);3await channel.Writer.WriteAsync(item);4await foreach (var item in channel.Reader.ReadAllAsync())5 Process(item);67// BlockingCollection8var collection = new BlockingCollection<int>(100);9collection.Add(item);10foreach (var item in collection.GetConsumingEnumerable())11 Process(item);
Key: Channel for async, BlockingCollection for blocking.