这是我继承的内部工具的代码:
while (listThreadsRunning != null)
{
listThreadsRunning.RemoveAll(mre => mre.Key.IsSet);
if ((listThreadsRunning.Count < maxThreads || maxThreads == 0) && queueThreads.Any())
{
queueThreads = new Queue<KeyValuePair<ManualResetEventSlim, ThreadInput>>(queueThreads);
var eventThreadPair = queueThreads.Dequeue();
if (!eventThreadPair.Key.IsSet)
{
listThreadsRunning.Add(eventThreadPair);
eventThreadPair.Value.Worker.Start();
}
}
Thread.Sleep(SleepOperationTime.Instance.time);
}
queueThreads
是在构造函数中使用此类型实例化的私有变量,并且队列不断由其他线程填充。为什么每次都要重新创建队列?我认为这不是一个很好的理由,但如果有的话,我很乐意听到它。