2013-04-30 74 views
0
foreach (var action in actions) 
{ 
    Task.Factory.StartNew(action); 
} 

但是,如果我需要限制在同一時間運行的動作數量呢?我怎麼做?如何限制某個特定代碼區域的線程數量?

+0

嘗試使用HTTP裏面:// MSDN .microsoft.com/ru-ru/library/dd321473.aspx – Frank59 2013-04-30 05:28:03

+0

MaxDegreeOfParallelism - 檢查這裏http://stackoverflow.com/questions/2898609/system-threading-tasks-limit-the-number-of-concurrent-tasks – 2013-04-30 05:35:17

回答

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

相關問題