예제 #1
0
        public async Task CancellableTaskTest()
        {
            var task1 = new Func <Task <int> >(async() =>
            {
                await Task.Delay(500);
                return(2);
            });
            var task2 = new Func <Task>(async() =>
            {
                await Task.Delay(500);
            });

            var cts1 = new CancellationTokenSource();
            var cts2 = new CancellationTokenSource();

            var t1 = AsyncUtils.FastCancellableTask(task1(), cts1.Token);
            var t2 = AsyncUtils.FastCancellableTask(task2(), cts2.Token);

            await Task.Delay(100);

            cts1.Cancel();
            cts2.Cancel();

            await Task.Delay(1);

            Assert.Equal(TaskStatus.Canceled, t1.Status);
            Assert.Equal(TaskStatus.Canceled, t2.Status);
        }