Методы, возвращающие задачи (например, SomeTask
), обычно возвращаются очень быстро, и распараллеливание их вызовов обычно приводит к более медленному выполнению.
Для коллекций задач гораздо более нормальнобыть построенным с (не параллельным) LINQ:
var tasks = Enumerable.Range(0, 500).Select(file => SomeTask()).ToList();
Console.WriteLine("Total tasks = " + tasks.Count);
Если ваш метод возврата задачи имеет некоторый код, связанный с процессором, и вам do необходимо выполнитьSomeTask
в потоке пула потоков, тогда вы можете использовать параллелизм.Один простой подход - заключить вызов в Task.Run
:
var tasks = Enumerable.Range(0, 500).Select(file => Task.Run(() => SomeTask())).ToList();
Console.WriteLine("Total tasks = " + tasks.Count);