¿Cómo se puede finalizar el servicio?C# Servicio de finalización de servicio de Windows
Environment.Exit provocará que la aplicación se inicie pero el servicio se mantenga en ejecución.
¿Alguna idea?
¿Cómo se puede finalizar el servicio?C# Servicio de finalización de servicio de Windows
Environment.Exit provocará que la aplicación se inicie pero el servicio se mantenga en ejecución.
¿Alguna idea?
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()
.
¿Puedo usar esto dentro de una excepción fuera de la clase que inicia el servicio? –
@Mike: actualizado con más explicaciones: no estoy seguro si lo entiendo correctamente en la parte "dentro de una excepción". ¿Puede explicarlo? – BrokenGlass
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 –