Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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();
        }
Exemplo n.º 3
0
        public void TaskFromQueueIsNotComplete()
        {
            //Arrange
            ContinuationQueue continuationQueue = new ContinuationQueue();

            // Act
            var t1 = continuationQueue.WaitAsync();

            // Assert
            t1.IsCompleted.Should().BeFalse();
        }