我正在编写一个FIFO排队的线程受限任务调度程序。
执行TaskScheduler.TryExecuteTask(task)
时,是否始终阻止对task
的调用?到目前为止的测试表明情况确实如此,但是我在任何地方都找不到此文档。
在上述调用之后,是否有任何理由调用task.Wait()
?如果任务以AggregateException
状态结束,则这样做会产生Faulted
。
最佳答案
对TryExecuteTask
的调用将始终被阻止,它将在您正在调用该函数的调度程序上运行您提供的任务,并在任务成功完成后返回。
如果您希望任务在其他线程中运行:在this page上,有一个示例,说明如何使用QueueUserWorkItem
通知ThreadPool有要执行的工作。当您在其中调用TryExecuteTask
时,可用线程将其拾取并执行任务。
通常在将任务传递到调度程序以阻止任务完成之前使用task.Wait()
。由于您不是在其他线程中执行任务,因此代码始终会阻塞,并且调用task.Wait()
将是多余的。
关于c# - TryExecuteTask(task)是否始终会阻塞?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35931200/