如何限制某个代码区域的线程数?

时间:2013-04-30 05:21:18

标签: c# multithreading asynchronous

foreach (var action in actions)
{
    Task.Factory.StartNew(action);
}

但是,如果我需要限制同时运行的操作数量怎么办?我该怎么做?

1 个答案:

答案 0 :(得分:1)

我非常喜欢微软的解决方案http://msdn.microsoft.com/en-us/library/ee789351.aspx

一次仅允许一个线程的示例用法:

 LimitedConcurrencyLevelTaskScheduler lcts = new LimitedConcurrencyLevelTaskScheduler(1);
 TaskFactory factory = new TaskFactory(lcts);

 factory.StartNew(()=> 
 {
   //work as usual
 });

考虑在您的操作中使用BlockingCollection和GetConsumingEnumerable()来实现非常干净的实现http://msdn.microsoft.com/en-us/library/dd287186.aspx