1

TryExecuteTaskInline 的 MSDN 文档指出:

派生自 TaskScheduler 的类实现此函数以支持在启动对该任务对象的等待的线程上内联执行任务。

但是,如果您查看源代码,则执行TaskScheduler.TryExecuteTaskInline

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

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

因此,要么我实际上不了解文档中的内容,要么是错误的。谁能解释一下?

我只是看不到该实现如何“支持在启动该任务对象的等待的线程上内联执行任务。”,正如该方法的文档所要求的那样。它只是调用 TryExecuteTask,后者调用任务的 ExecuteEntry(您只需单击方法名称即可跳转到其源)。

4

0 回答 0