public Task Start() { var promise = new TaskCompletionSource <bool>(); queue.Post(new WI_Start(promise)); return(promise.Task); }
public static async Task RunAsyncQueueAsync(int count) { var cancellationToken = CancellationToken.None; var target = new AsyncQueue <string>(count, count); var PostTasks = new Task[count]; var dequeueTasks = new Task <string> [count]; var PostSetupTask = Task.Run(() => { for (int i = 0; i < count; i++) { var item = "HVQFSW613ACT65DOS2ILBA4G4QB3UP3K4PPZPB7UZ771SX9TX7DVNZR82W1TSHWDBZHIE8V6CGILADRFQ3QA76BOYA4T3XS7A8OQ3I2FCT8X04L2GXR3RY23WB2A0ZLNT58WCMZTY54PRPOVVENCMOJMCZC6D85H9HPGJ58BBOHN7PJ0G3QTDSB8K4ACT26QXG5D30WI"; PostTasks[i] = Task.Run(() => target.Post(item)); } }); var dequeueSetupTask = Task.Run(() => { for (int i = 0; i < count; i++) { dequeueTasks[i] = target.ReceiveAsync(cancellationToken); } }); await Task.WhenAll(PostSetupTask, dequeueSetupTask); await Task.WhenAll(dequeueTasks); await Task.WhenAll(PostTasks); if (target.BufferCount != 0 || target.PromisesCount != 0) { System.Console.WriteLine("AsyncQueue - Not empty"); } }
public static async Task RunAsyncQueueAsync(int count) { var cancellationToken = CancellationToken.None; var target = new AsyncQueue<string>(count, count); var PostTasks = new Task[count]; var dequeueTasks = new Task<string>[count]; var PostSetupTask = Task.Run(() => { for (int i = 0; i < count; i++) { var item = "HVQFSW613ACT65DOS2ILBA4G4QB3UP3K4PPZPB7UZ771SX9TX7DVNZR82W1TSHWDBZHIE8V6CGILADRFQ3QA76BOYA4T3XS7A8OQ3I2FCT8X04L2GXR3RY23WB2A0ZLNT58WCMZTY54PRPOVVENCMOJMCZC6D85H9HPGJ58BBOHN7PJ0G3QTDSB8K4ACT26QXG5D30WI"; PostTasks[i] = Task.Run(() => target.Post(item)); } }); var dequeueSetupTask = Task.Run(() => { for (int i = 0; i < count; i++) { dequeueTasks[i] = target.ReceiveAsync(cancellationToken); } }); await Task.WhenAll(PostSetupTask, dequeueSetupTask); await Task.WhenAll(dequeueTasks); await Task.WhenAll(PostTasks); if (target.BufferCount != 0 || target.PromisesCount != 0) { System.Console.WriteLine("AsyncQueue - Not empty"); } }