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()
都是多余的。
我正在编写一个 FIFO 队列线程限制任务调度程序。
在执行 task
时,对 TaskScheduler.TryExecuteTask(task)
的调用是否总是阻塞?到目前为止的测试表明情况确实如此,但是我无法在任何地方找到它的记录。
是否有任何理由在上述调用之后调用 task.Wait()
?如果任务以 Faulted
状态结束,则执行此操作会导致 AggregateException
。
对 TryExecuteTask
的调用将始终阻塞,它 运行 是您在调用函数的调度程序上提供它的任务,并且 returns 如果任务有成功完成。
如果您希望任务 运行 在不同的线程中:在 this page 上有一个关于如何使用 QueueUserWorkItem
通知线程池有工作要执行的示例.当你在那里调用 TryExecuteTask
时,一个可用的线程会选择它并执行任务。
task.Wait()
通常在将任务传递给调度程序时使用,以阻塞直到任务完成。由于您没有在不同的线程中执行任务,因此无论如何代码块和调用 task.Wait()
都是多余的。