TryExecuteTask(task) 是否总是阻止



我正在编写一个FIFO排队线程限制的任务调度程序。

TaskScheduler.TryExecuteTask(task)的调用是否总是在执行task时阻止? 到目前为止的测试表明情况确实如此,但是我在任何地方都找不到记录。

在上述电话之后,有什么理由打电话给task.Wait()吗? 如果任务以Faulted状态结束,则这样做会导致AggregateException

TryExecuteTask 的调用将始终阻塞,它会在调用函数的计划程序上运行您提供的任务,如果任务成功完成,则返回。

如果您希望任务在不同的线程中运行:在此页面上有一个示例,介绍如何使用QueueUserWorkItem通知 ThreadPool 有工作要执行。当您调用里面的TryExecuteTask时,可用的线程将拾取它并执行任务。

task.Wait()通常在将任务传递给计划程序以阻止直到任务完成时使用。由于您不是在不同的线程中执行任务,因此代码块无论如何都会阻塞,调用task.Wait()将是多余的。

相关内容

最新更新