ChannelWriter и ChannelReader в C#
У канала две стороны. ChannelWriter принимает элементы, ChannelReader отдаёт их. Снаружи не нужен общий список, в который писали бы оба.
Одно чтение забирает уже записанный элемент и не ждёт, пока канал закроют. Закрытие нужно, когда читатель должен понять, что новых элементов больше не будет.
Запишем через писателя строку "hi" и прочитаем её через читателя:
using System.Threading.Channels;
Channel<string> ch = Channel.CreateUnbounded<string>();
ChannelWriter<string> w = ch.Writer;
ChannelReader<string> r = ch.Reader;
await w.WriteAsync("hi");
Console.WriteLine(await r.ReadAsync()); // выведет hi
Запишите через писателя канала числа 4 и 9. Прочитайте оба через читателя и выведите их сумму.