2013-10-10 7 views
8

Hat Environment.Exit aus einer Windows-Dienst aufrufen machen das SCM die OnStop() -Methode des Dienstes nennen, oder ist dieses Verhalten unberechenbar?Aufruf Environment.Exit in einem Windows-Dienst

Ich habe ein paar Windows-Dienste, die diesen Code haben. Leider kann ich dieses Verhalten nicht entfernen. Aber ich muss wissen, ob onStop() aufgerufen wird, um zu entscheiden, ob in dieser Methode oder in der Methode, die Environment.Exit aufruft, ein gemeinsamer Stop-Code gesetzt wird.

+0

möglich Duplikat aufzurufen [Kann ein Dienst in .NET geschrieben selbst beenden? ] (http://stackoverflow.com/questions/554276/can-a-service-written-in-net-self-terminate) – CodeCaster

Antwort

11

Enviroment.Exit wird den Prozess schließen, die durch den Dienst gewickelt wird.

Daher Aufruf, wird onStop() Methode nicht aufrufen.

Sie können die Methode selbst aufrufen, anstatt zu Exit des Aufrufs

Sie den folgenden Code verwenden können SCM stop

System.ServiceProcess.ServiceController svc = new System.ServiceProcess.ServiceController("NameOfYourService"); 
svc.Stop(); 
+0

Danke für die schnelle Antwort !! Also ist dieses Verhalten immer zu erwarten, oder? – Cygnus

+0

Das ist, was Sie suchen: http://stackoverflow.com/a/554292/1361084 Seine Jon Skeets Antwort auf den Kommentar @CodeCaster geschrieben. – Ofiris

+0

Hi @Ofiris ich komme gerade auf diesen Thread. nur wundern können wir winservice von jeder routine von win service selbst mit servicecontroller klasse stoppen? Oder brauche ich separate Apps, die meinen Dienst stoppen können? bitte führen. Dank – Thomas

Verwandte Themen