我正在编写一个FIFO排队线程限制的任务调度程序。
对TaskScheduler.TryExecuteTask(task)
的调用是否总是在执行task
时阻止? 到目前为止的测试表明情况确实如此,但是我在任何地方都找不到记录。
在上述电话之后,有什么理由打电话给task.Wait()
吗? 如果任务以Faulted
状态结束,则这样做会导致AggregateException
。
对 TryExecuteTask
的调用将始终阻塞,它会在调用函数的计划程序上运行您提供的任务,如果任务成功完成,则返回。
如果您希望任务在不同的线程中运行:在此页面上有一个示例,介绍如何使用QueueUserWorkItem
通知 ThreadPool 有工作要执行。当您调用里面的TryExecuteTask
时,可用的线程将拾取它并执行任务。
task.Wait()
通常在将任务传递给计划程序以阻止直到任务完成时使用。由于您不是在不同的线程中执行任务,因此代码块无论如何都会阻塞,调用task.Wait()
将是多余的。