public void ScheduleTask_Should_Call_Sample_On_Scheduler() { // Arrange const int count = 5; var scheduler = new TestScheduler(); var settings = new TaskSchedulerSettings { RequestDelay = TimeSpan.FromMilliseconds(250) }; ITaskScheduler taskScheduler = new DelayTaskScheduler(settings, scheduler); // Act var tasks = Enumerable.Range(0, count + 1) .Select(i => Task.Run(() => Task.FromResult(i))) .Select(t => taskScheduler.ScheduleTask(() => t)) .ToArray(); scheduler.AdvanceTo(settings.RequestDelay.Ticks * count); // Assert tasks.Count(t => t.IsCompleted).Should().Be(count); taskScheduler.Dispose(); }
static void Main(string[] args) { TaskScheduler scheduler = new DelayTaskScheduler(); TaskFactory factory = new TaskFactory(scheduler); Task task = factory.StartNew(MyTask); TaskAwaiter awaiter = task.GetAwaiter(); while (!awaiter.IsCompleted) { Console.Write("."); Thread.Sleep(100); } Console.WriteLine("\nAll tasks completed"); Console.ReadKey(); }