背景信息:我正在尝试创建一个能够一次处理 5 个并发操作的单例类。每个操作由 表示SomeAsyncMethod
。
此方法存在于单例类中。
consumers
是一个ConcurrentDictionary<int,Task>
我的问题:由于某种原因,ContinueWith
委托在SomeAsyncMethod
. 我知道发生这种情况的原因是因为我有另一种观察方法instance.Consumers.Count
- 计数0
在SomeAsyncMethod
完成之前。
这是为什么?
public bool TryAddDequeueRequest()
{
if (instance.Consumers.Count < 5)
{
Task bogusTask;
Task newTask = new Task(SomeAsyncMethod);
//RUNS AFTER THE REQUEST IS COMPLETED
newTask.ContinueWith(t =>
{
instance.Consumers.TryRemove(t.Id, out bogusTask);
});
//WE ADD THE TASK TO QUEUE
instance.Consumers.TryAdd(newTask.Id, newTask);
//SET IT AND FORGET IT
newTask.Start();
return true;
}
else
return false;
}