using System.Threading.Tasks;
using System.Threading.Channels;
private static readonly Channel<bool> _channel = Channel.CreateBounded<bool>(new BoundedChannelOptions(1)
FullMode = BoundedChannelFullMode.DropWrite,
public static void Main()
Task.Run(WaitBeforeComplete);
Console.WriteLine("signal");
_channel.Writer.Complete();
for( int i = 0; i < 100; i++){
Task.Run(WaitAfterComplete);
static async Task WaitBeforeComplete(){
await _channel.Reader.WaitToReadAsync().ConfigureAwait(false);
Console.WriteLine("WaitBeforeComplete exits");
static async Task WaitAfterComplete(){
await _channel.Reader.WaitToReadAsync().ConfigureAwait(false);
Console.WriteLine("WaitAfterComplete exits");