2013-10-10 2 views
8

Il richiamo di Environment.Exit da un servizio Windows fa sì che SCM chiami il metodo onStop() del servizio o questo comportamento sia imprevedibile?Chiamare Environment.Exit in un servizio Windows

Ho un paio di servizi Windows che hanno questo codice. Sfortunatamente, non posso rimuovere questo comportamento. Ma ho bisogno di sapere se verrà chiamato onStop() per decidere se inserire un codice di arresto comune in quel metodo o all'interno del metodo che chiama Environment.Exit.

+0

possibile duplicato di [Può un servizio scritto in .NET auto-sospendere? ] (http://stackoverflow.com/questions/554276/can-a-service-written-in-net-self-terminate) – CodeCaster

risposta

11

Enviroment.Exit chiuderà il processo che è incluso nel servizio.

Pertanto, chiamandolo, non chiamerà il metodo onStop().

È possibile richiamare il metodo da soli invece di chiamare a Exit

È possibile utilizzare il seguente codice per richiamare SCM stop

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

Grazie per la risposta rapida !! Quindi questo comportamento è da aspettarsi sempre giusto? – Cygnus

+0

Questo è quello che stai cercando: http://stackoverflow.com/a/554292/1361084 I suoi Jon Skeets rispondono al commento @CodeCaster pubblicato. – Ofiris

+0

Ciao @Ofiris mi sono appena imbattuto in questa discussione. mi chiedo semplicemente possiamo fermare winservice da qualsiasi routine del servizio di vittoria stessa utilizzando la classe ServiceController? o ho bisogno di app separate che possono fermare il mio servizio? per favore guida. grazie – Thomas