Если вы надеетесь на какое-либо событие или публичный хук, который расскажет вам о том, что делают потоки ThreadPool, к сожалению, такого нет.
Я могу подумать о двух других подходах, которые могут помочь:
Во-первых, вы можете проверить значение результата workerThreads из ThreadPool.GetAvailableThreads()
до и после вызова вашей библиотеки. Если значение изменяется, библиотека может быть виновником. Скорее всего, это имеет смысл в тестовой среде, где вы обрабатываете только один запрос. Вы также можете сохранить число workerThreads в пользовательском счетчике производительности Windows и отслеживать его с течением времени - возможно, используя его для сравнения одного подхода с другим.
Вот ссылка на статью, описывающую подход счетчика производительности:
http://msdn.microsoft.com/en-us/library/ff650682.aspx
Если вы используете IIS 7+, другой возможностью является отключение MaxConcurrentRequestsPerCPU
(через HostingEnvironment
в .NET 4.0+ или через файл aspnet.config в .NET 3.5 или более поздней версии), установив его на ноль. и установите MaxConcurrentThreadsPerCPU
на относительно небольшое число и измерьте производительность вашего приложения под нагрузкой, используя один интерфейс в вашей библиотеке по сравнению с другим. Если запросы попадают в очередь из-за нехватки потоков, время отклика соответственно увеличивается. Детали того, как это сделать, и какие измерения, к сожалению, нужно выполнить, зависят от структуры вашей библиотеки и веб-запросов.