-
Notifications
You must be signed in to change notification settings - Fork 0
Work Dependency
ZjzMisaka edited this page Nov 19, 2024
·
2 revisions
如果设置了 WorkOption.Dependents
, 直到所有依赖的任务执行完毕, 该任务都不会开始.
string id0 = powerPool.QueueWorkItem(() =>
{
// Do something
});
string id1 = powerPool.QueueWorkItem(() =>
{
// Do something
});
powerPool.QueueWorkItem(() =>
{
// Do something
},
new WorkOption()
{
Dependents = new ConcurrentSet<string>() { id0, id1 }
});
线程池只会保存失败任务的信息, 并且当线程池进入空闲状态并重新开始时, 失败任务的记录将被清除, 除非将 PowerPoolOption.ClearFailedWorkRecordWhenPoolStart
设置为 false
.
通常情况下, 如果一个任务准备执行但是它依赖的任务未能完成, 则不应允许该任务执行.
如果 PowerPoolOption.ClearFailedWorkRecordWhenPoolStart
为 true
, 为了防止由于失败信息的丢失导致线程池错误地允许任务开始, 可以使用 PowerPool.EnablePoolIdleCheck 暂时停止线程池的空闲检查, 直到该任务被添加到线程池中.