TaskScheduler.TryExecuteTaskInline - 相同的线程或上下文?

时间:2015-11-20 15:10:36

标签: c# multithreading synchronizationcontext

MSDN documentation of TryExecuteTaskInline声明:

  

从TaskScheduler派生的类实现此功能以支持   在一个启动等待的线程上内联执行任务   任务对象。

但是,如果您查看source codeTaskScheduler.TryExecuteTaskInline的实施:

protected override bool TryExecuteTaskInline(Task task, bool taskWasPreviouslyQueued)
{
    if (SynchronizationContext.Current == m_synchronizationContext)
    {
        return TryExecuteTask(task);
    }
    else
        return false;
}

仅检查当前同步上下文是否与实例化期间捕获的上下文相同(请参阅同一源文件中的SynchronizationContextTaskScheduler构造函数)。多个线程可以共享一个同步上下文,因此它不一定意味着相同的线程。

所以它要么比我实际上不了解文档说的那样,要么是错的。任何人都可以解释一下吗?

我根本无法看到这个实现如何“支持在启动等待该任务对象的线程上的任务的内联执行。”,正如该方法的文档所要求的那样。它只调用TryExecuteTask,它调用任务的ExecuteEntry(你只需点击方法名称就可以跳转到它的来源)。

0 个答案:

没有答案