Смотреть в сторону разницы: Process.GetCurrentProcess().Threads.Count
и ThreadPool.ThreadCount
Скорее всего какой-то сервис создает множество потоков (ручных) и держит ссылки на них, т.к. поток это объект ядра и он должен быть уничтожен когда на него перестают ссылаться, либо это просто поток, который не завершатся (while (true)
какой-нибудь)