public async Task <int> ChannelPerf() { var channel = CreateChannel(); var itemsToProduce = Capacity / ProducerCount; var producerFactory = new ProducerFactory(channel.Writer, itemsToProduce); var subscriberFactory = new ConsumerFactory(channel.Reader); var prodThread = producerFactory.Start(); var subsThread = subscriberFactory.Start(); await Task.WhenAll(prodThread, subsThread); return(subsThread.Result); }