У меня есть служба Windows C #, которая запускает различные объекты (библиотеки классов).Каждый из этих объектов имеет свою собственную логику «обработки», которая запускает несколько долго выполняющихся потоков обработки с помощью ThreadPool
.У меня есть один пример, например, такой:
System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(WorkerThread_Processing));
Это прекрасно работает.Мое приложение работает без проблем, и мои потоки работают хорошо.
Теперь для регрессионного тестирования я запускаю те же самые объекты, но не из службы Windows, а из консольного приложения C #.Он вызывает тот же самый точный код (потому что он вызывает те же самые объекты), однако метод WorkerThread_Processing
задерживается до 20 секунд перед началом.
Я вошел и переключился с ThreadPool
наThread
, и проблема исчезла.Что здесь может происходить?Я знаю, что я не превышаю счет MaxThreads
(я начинаю не более 20 потоков).