【发布时间】:2014-07-04 09:11:01
【问题描述】:
当所有当前计划的任务都完成后,是否可以排队执行新任务?我不能使用TaskFactory.ContinueWhenAll,因为我没有对计划任务的引用,因为它们是由子组件计划的。获取所有当前计划的任务会有所帮助,因为在这种情况下,我可以使用 ContinueWhenAll 方法来使用它们。
【问题讨论】:
-
您可以实现自己的 TaskScheduler,它是实际 TaskScheduler 的包装器。
-
我不明白如何做到这一点,因为 GetScheduledTasks() 是一种受保护的方法。
-
只需拥有自己的TaskScheduler,它将每个排队的任务存储在一个列表中,然后再将其传递给“真正的”TaskScheduler
-
只要他们不专门使用TaskScheduler.Default,是的。看到这个答案:stackoverflow.com/a/21968669/885318
-
您无法控制进程中正在运行的任务。任何库,包括 BCL,都可以启动任务。等待所有任务是非常危险和不稳定的。
标签: c# multithreading task-parallel-library task