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();
}