解决方案1和解决方案2有什么区别?_taskQ是BlockingCollection,并尝试实现生产者-消费者场景。 BlockingCollection在内部使用默认的ConcurrentQueue进行存储。
//Solution 1
foreach (Action action in _taskQ.GetConsumingEnumerable())
{
action(); // Perform task.
Thread.Sleep(1000);
}
如果没有任何项目,TryTake 将会阻塞
//Solution 2
Action t;
while(_taskQ.TryTake(out t))
{
t();
Thread.Sleep(1000);
}
System.Threading.Task
并像这样做:Task.Run(async delegate { await Task.Delay(1000); });
- MethodManawait Task.Delay(1000);
即可。 - piedar