MSDN documentation of TryExecuteTaskInline声明:
从TaskScheduler派生的类实现此功能以支持 在一个启动等待的线程上内联执行任务 任务对象。
但是,如果您查看source code,TaskScheduler.TryExecuteTaskInline
的实施:
protected override bool TryExecuteTaskInline(Task task, bool taskWasPreviouslyQueued)
{
if (SynchronizationContext.Current == m_synchronizationContext)
{
return TryExecuteTask(task);
}
else
return false;
}
仅检查当前同步上下文是否与实例化期间捕获的上下文相同(请参阅同一源文件中的SynchronizationContextTaskScheduler
构造函数)。多个线程可以共享一个同步上下文,因此它不一定意味着相同的线程。
所以它要么比我实际上不了解文档说的那样,要么是错的。任何人都可以解释一下吗?
我根本无法看到这个实现如何“支持在启动等待该任务对象的线程上的任务的内联执行。”,正如该方法的文档所要求的那样。它只调用TryExecuteTask,它调用任务的ExecuteEntry(你只需点击方法名称就可以跳转到它的来源)。