public static async Task ContinuationQueueExampleAsync() { var cq = new ContinuationQueue(); var t1 = Task.Run(async() => { Thread.Sleep(100); Console.WriteLine("Task A Added"); await cq.WaitAsync().ConfigureAwait(false); Console.WriteLine("A Done"); }); var t2 = Task.Run(async() => { Thread.Sleep(200); Console.WriteLine("Task B Added"); await cq.WaitAsync().ConfigureAwait(false); Console.WriteLine("B Done"); }); Thread.Sleep(1_000); Console.WriteLine("FinishTask"); cq.FinishTask(); Thread.Sleep(1_000); Console.WriteLine("FinishTask"); cq.FinishTask(); await Task.WhenAll(t1, t2).ConfigureAwait(false); }
public void TaskFromQueueCompletesAfterFinish() { //Arrange ContinuationQueue continuationQueue = new ContinuationQueue(); // Act var t1 = continuationQueue.WaitAsync(); var t2 = continuationQueue.WaitAsync(); continuationQueue.FinishTask(); // Assert t1.IsCompleted.Should().BeTrue(); t2.IsCompleted.Should().BeFalse(); }
public void TaskFromQueueIsNotComplete() { //Arrange ContinuationQueue continuationQueue = new ContinuationQueue(); // Act var t1 = continuationQueue.WaitAsync(); // Assert t1.IsCompleted.Should().BeFalse(); }