private void OneProducer_OneConsumer_Chan(int capacity, int itemCount) { var chan = new Chan <int>(capacity); var producer = Task.Run(() => { foreach (var i in Enumerable.Range(0, itemCount)) { chan.Send(i); } chan.Close(); }); var consumer = Task.Run(() => { foreach (var i in chan.Yield()) { } }); Task.WaitAll(producer, consumer); }