Параметр LongRunning
является подсказкой для планировщика, что означает, что он может выбрать выполнение Task
в потоке, не принадлежащем ThreadPool (если это пул потоков, поддерживаемый DefaultScheduler
, это наиболеескорее всего будет).Одним из побочных эффектов опции LongRunning
является то, что для этой задачи запрещается подкладка задач.Это означает, что если задача LongRunning
создает другие вложенные или дочерние задачи и вызывает Wait
для любой из этих задач, они всегда будут выполняться в другом потоке, а не встроенными (т. Е. Запускаться в том же потоке, выполняющем * 1009).*).
В контексте ответов других людей стоит отметить, что создание большого числа заданий, для выполнения которых без подсказки LongRunning
все еще может вызвать эскалацию в течение длительного времени.количество потоков из-за алгоритма внедрения потоков, который используется DefaultScheduler
.Алгоритм не различает потоки в пуле, которые заблокированы, и потоки, которые долгое время выполняли рабочий элемент, и в обоих случаях он может ответить, добавив больше потоков в пул, чтобы увеличить пропускную способность.