У меня есть приложение ASP. NET Web API. Получаемые запросы обычно занимают 20 секунд - 10 минут. Таким образом, он создает задачу и немедленно возвращает гид. Затем вызывающая сторона может позже передать guid и получить обратно «в процессе» или результаты обработки.
Насколько я понимаю, IIS управляет этим пулом потоков, и как только он запускает столько потоков, сколько IIS считает целесообразным для фоновых операций любые дополнительные запросы помещаются в очередь до тех пор, пока не станет доступен поток.
Я вижу вызовы ThreadPool. GetMinThreads, GetMaxThreads и GetAvailableThreads. Но есть ли звонок, чтобы узнать количество нерешенных задач? Существует большая разница между GetAvailableThreads == 0 и нет ожидающих потоков против 100 ожидающих потоков.