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

Но, если мне нужно ограничить количество действий, выполняемых в одно и то же время? Как мне это сделать?Как ограничить количество потоков для определенного региона кода?

+0

попытаться использовать HTTP: // MSDN .microsoft.com/ru-ru/library/dd321473.aspx – Frank59

+0

MaxDegreeOfParallelism - проверьте здесь http://stackoverflow.com/questions/2898609/system-threading-tasks-limit-the-number-of-concurrent-tasks –

ответ

1

Мне действительно нравится решение от Microsoft. 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

Смежные вопросы