public void RunSynchronously(TaskScheduler scheduler) { if (this.Status != TaskStatus.Created) { throw new InvalidOperationException("The task is not in a valid state to be started"); } if (scheduler.TryExecuteTask(this)) { return; } Start(scheduler); Wait(); }