Ihr Dienst wurde wahrscheinlich gestoppt, aber die Threads laufen noch, also befindet sich der Zombie-Status. Es ist bekannt, dass Threads unter Windows kaum zu stoppen sind, und wenn sie in einem unterbrechungsfreien Systemaufruf stecken, sind sie absolut nicht zu stoppen.
Die einzige Lösung besteht darin, Ihren Dienst besser zu gestalten, sodass die Threads möglicherweise angehalten werden und dieses Signal in der OnStop () - Methode des Dienstes festgelegt wird.
Die Threads sollten bei allen Systemaufrufen immer ein Timeout ausführen und ihre Stoppbedingung überprüfen, wenn das Timeout ausgelöst wird.
Die Alternative könnte darin bestehen, dass die OnStop () -Methode thread.Abort()
zum Stoppen der Threads verwendet wird. Dies ist normalerweise eine schlechte Idee, da nicht bekannt ist, was der Thread tun könnte, wenn er gestoppt wird und in welchem Zustand die Ressourcen, die er modifiziert, nach dem Abbruch sein werden (was außerdem möglicherweise ineffektiv ist).