我正在编写一个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/

10-10 06:23