foreach (var action in actions)
{
Task.Factory.StartNew(action);
}
Но, если мне нужно ограничить количество действий, выполняемых в одно и то же время? Как мне это сделать?Как ограничить количество потоков для определенного региона кода?
foreach (var action in actions)
{
Task.Factory.StartNew(action);
}
Но, если мне нужно ограничить количество действий, выполняемых в одно и то же время? Как мне это сделать?Как ограничить количество потоков для определенного региона кода?
Мне действительно нравится решение от 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
попытаться использовать HTTP: // MSDN .microsoft.com/ru-ru/library/dd321473.aspx – Frank59
MaxDegreeOfParallelism - проверьте здесь http://stackoverflow.com/questions/2898609/system-threading-tasks-limit-the-number-of-concurrent-tasks –