Прямых ограничений нет - однако, когда вы используете Задачу, она планирует Задачу в ThreadPool. По умолчанию IIS совместно использует один пул потоков для всего процесса IIS, что может (особенно на занятом сервере) вызвать истощение потоков. Это означает, что то же руководство по использованию ThreadPool применяется при работе с задачами. См. этот пост для деталей .
Чтобы увидеть, является ли это проблемой, вы можете, по крайней мере, в качестве теста, сгенерировать все свои экземпляры Task с подсказкой TaskCreationOptions.LongRunning . Это приведет к тому, что TaskScheduler по умолчанию будет создавать задачу в своем собственном, выделенном (новом) потоке вместо использования потока ThreadPool. Хотя я не думаю, что это хорошая идея для долгосрочного решения, вы сможете проверить, что это вызвало проблему с пулом потоков. Если это так, вы можете определить другие параметры, например, потенциально использовать пользовательский TaskScheduler для управления потоками / задачами для этой операции.