C# 任务的同步上下文。延迟

C# 任务的同步上下文。延迟,c#,.net,task,synchronizationcontext,C#,.net,Task,Synchronizationcontext,我发现,Task.Run总是在.NETFramework线程池(TaskScheduler.Default)的线程上执行。我想,Task.Delay也一样,但我不确定 MSDN仅表示: 创建将在一段时间延迟后完成的任务 因此,问题是:哪里(在哪个同步上下文中)运行任务。Delay?任务。Delay不会在任何地方运行。它只是创建一个在指定时间后完成的任务。与任务不同。Run它不接受您的委托在某处运行。大多数任务不会表示在另一个线程上执行某个方法Task.Run是为数不多的执行此操作的方法之一。因为

我发现,
Task.Run
总是在.NETFramework线程池(
TaskScheduler.Default
)的线程上执行。我想,
Task.Delay
也一样,但我不确定

MSDN仅表示:

创建将在一段时间延迟后完成的任务


因此,问题是:哪里(在哪个同步上下文中)运行
任务。Delay

任务。Delay
不会在任何地方运行。它只是创建一个在指定时间后完成的任务。与
任务不同。Run
它不接受您的委托在某处运行。大多数任务不会表示在另一个线程上执行某个方法
Task.Run
是为数不多的执行此操作的方法之一。

因为它在指定的时间后完成,所以它应该运行指定的时间,或者?@Rekshino它没有“运行”任何东西。它正在创建一个任务,该任务将在指定时间后标记为已完成。在这段时间里,它不会坐在那里运行代码。这段时间它什么也没做。我想起了一个:)@Servy-Hmm。。我需要考虑Wait()和Wait for
Task。Delay
for Task,它不运行。@Rekshino是的。这基本上是不正确的。是等待造成了阻塞,而不是延迟。看看。“(一项任务)实际上只是“对未来结果的承诺”