2011-07-31 22 views

Respuesta

14

Puede utilizar el SMC para apagar el servicio desde dentro del propio servicio:

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

Editar:

La otra opción es llamar ServiceBase.Stop() en su servicio - si tiene acceso a su instancia de clase derivada ServiceBase que sería la forma más sencilla de hacerlo; en muchos casos es engorroso tener que pasar esta dependencia.

Si tiene una excepción no detectada, yo personalmente dejaría que el servicio se bloquee (o lo logre y luego throw), lo que dejará un mensaje en el registro de eventos que detalla el motivo de la finalización. Si lo necesita, puede atrapar la excepción y luego llamar al ServiceBase.Stop().

+0

¿Puedo usar esto dentro de una excepción fuera de la clase que inicia el servicio? –

+0

@Mike: actualizado con más explicaciones: no estoy seguro si lo entiendo correctamente en la parte "dentro de una excepción". ¿Puede explicarlo? – BrokenGlass

+0

bueno, tengo una prueba {} catch {} que está dentro de un tiempo {}. El problema es que si esta prueba falla, necesito que se detengan todos esos servicios. Llamo al servicio para detenerme en Service1.cs, necesito que esto ocurra en una clase diferente –

Cuestiones relacionadas