Возможно, ваш сервис остановлен, но потоки все еще работают, поэтому он находится в состоянии зомби. Общеизвестно, что в Windows трудно остановить потоки, и если они застряли в непрерывном системном вызове, их невозможно остановить.
Единственное решение состоит в том, чтобы лучше спроектировать ваш сервис, чтобы потоки могли сигнализировать об остановке, и этот сигнал устанавливается в методе OnStop () сервиса.
Потоки должны всегда превышать время ожидания для всех системных вызовов и проверять состояние их остановки, когда время ожидания срабатывает.
Альтернативой может быть использование метода OnStop () для thread.Abort()
остановки потоков. Обычно это плохая идея, потому что неизвестно, что может делать поток, когда остановлен, и в каком состоянии будут ресурсы, которые он изменяет после прерывания (что, кроме того, может быть неэффективным).