## About The `System.Threading.Channels` library provides types for passing data asynchronously between producers and consumers. ## Key Features * Abstractions representing channels for one or more producers to publish data to one or more consumers * APIs focused on asynchronous production and consumption of data * Factory methods for producing multiple kinds of channels ## How to Use ```C# using System; using System.Threading.Channels; using System.Threading.Tasks; Channel channel = Channel.CreateUnbounded(); Task producer = Task.Run(async () => { int i = 0; while (true) { channel.Writer.TryWrite(i++); await Task.Delay(TimeSpan.FromSeconds(1)); } }); Task consumer = Task.Run(async () => { await foreach (int value in channel.Reader.ReadAllAsync()) { Console.WriteLine(value); } }); await Task.WhenAll(producer, consumer); ``` ## Main Types The main types provided by this library are: * `System.Threading.Channel` * `System.Threading.Channel` ## Additional Documentation * [Overview](https://devblogs.microsoft.com/dotnet/an-introduction-to-system-threading-channels/) * [API documentation](https://learn.microsoft.com/dotnet/api/system.threading.channels) ## Related Packages https://www.nuget.org/packages/System.Threading.Tasks.Dataflow/ ## Feedback & Contributing System.Threading.Channels is released as open source under the [MIT license](https://licenses.nuget.org/MIT). Bug reports and contributions are welcome at [the GitHub repository](https://github.com/dotnet/runtime).