TryExecuteTask(task) 总是阻塞吗?

Does TryExecuteTask(task) always block?

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

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

是否有任何理由在上述调用之后调用 task.Wait()?如果任务以 Faulted 状态结束,则执行此操作会导致 AggregateException

TryExecuteTask 的调用将始终阻塞,它 运行 是您在调用函数的调度程序上提供它的任务,并且 returns 如果任务有成功完成。

如果您希望任务 运行 在不同的线程中:在 this page 上有一个关于如何使用 QueueUserWorkItem 通知线程池有工作要执行的示例.当你在那里调用 TryExecuteTask 时,一个可用的线程会选择它并执行任务。

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