Согласно msdn , Task.Run (Action) использует поток в ThreadPool для фактического выполнения действия. Мой вопрос (в виде состояний плитки), запустит ли Task.Run новый поток, если нет ничего доступного в ThreadPool? Или просто подождать, пока он не появится?
[tl; dr] В настоящее время я ставлю некоторые вызовы прямо в ThreadPool:
ThreadPool.QueueUserWorkItem(x => ...);
Но я заметил, что при некоторых нагрузках у приложения заканчиваются потоки в пуле (ошибка Parallel.ForEach где-то еще в программе).
Я знаю, что увеличение количества потоков в пуле, вероятно, ничего не решит, поэтому я думаю использовать MaxDegreeOfParallelism (ParallelOptions) для управления количеством потоков, используемых Parallel.Foreach.
Во всяком случае, я все же хотел бы знать ответ на поставленный вопрос.
Спасибо =]