我试图让多个任务消耗来自并发集合的对象,但仅在特定资源可用时。
为了表明此资源的可用性,我使用了 ManualResetEvent,我的任务主体如下所示:
while(!_token.IsCancellationRequested)
{
operationsLock.WaitLock();
_token.ThrowIfCancellationRequested();
// dothings
}
但是,我注意到,从锁定解锁的那一刻到重新安排任务的那一刻,我可能有几百毫秒的时间可以重新启动任务而它们不是,可能是因为它们根本没有被安排。
我正在使用 TaskFactory 启动任务,我该如何改善这种行为?有没有更好的策略在资源不可用时暂停任务?