示例#1
0
        public void CancelPendingUpdates_PendingTasksAreCanceled()
        {
            var scheduler = new TaskDelayScheduler(TimeSpan.FromMilliseconds(50), new IProjectThreadingServiceMock(), CancellationToken.None);

            bool taskRan = false;
            var  task1   = scheduler.ScheduleAsyncTask((ct) =>
            {
                taskRan   = true;
                int count = 50;
                while (count != 0)
                {
                    ct.ThrowIfCancellationRequested();
                    Thread.Sleep(20);
                    --count;
                }
                return(Task.CompletedTask);
            });

            scheduler.CancelPendingUpdates();

            try
            {
                task1.Task.Wait();
                Assert.False(taskRan);
            }
            catch (OperationCanceledException)
            {
            }
        }
示例#2
0
        public async Task CancelPendingUpdates_SkipsPendingTasks()
        {
            var scheduler = new TaskDelayScheduler(TimeSpan.FromMilliseconds(250), new IProjectThreadingServiceMock(), CancellationToken.None);

            bool taskRan = false;
            var  task    = scheduler.ScheduleAsyncTask(ct =>
            {
                taskRan = true;
                return(Task.CompletedTask);
            });

            scheduler.CancelPendingUpdates();

            await task;

            Assert.False(taskRan);
        }