2009-05-20 8 views
5

Estoy escribiendo un servicio de Windows en .net 2.0.¿Cómo detener un servicio dentro del método OnStart?

¿Qué debo hacer con el método OnStart() si por alguna razón no quiero que se inicie mi servicio? ¿Puedo simplemente llamar al método Stop() de la clase base (ServiceBase)? Lo he intentado y estoy recibiendo algunas excepciones graciosas de acceso a la memoria. ¿Es necesario iniciar un hilo separado para llamar al método Stop()?

Respuesta

8

¿Por qué quieres hacer eso? Si hay un error, conéctelo en el registro de eventos y genere una excepción. Su servicio no se iniciará y el usuario será informado de que sucedió algo malo.

+0

De hecho, si lanza una excepción, el servicio no se iniciará. Servicios de Windows maneja todo esto para usted. – Noldorin

+0

¡Hay muchas razones por las que uno no quiere que se inicie un servicio! Entonces, ¿quizás no está realmente preguntando por qué, sino que sugiere que la respuesta es arrojar una excepción? ¿Qué hay de la configuración de ServiceBase.ExitCode - es aconsejable/necesario? – Rory

+1

@Rory: no iniciar un servicio es algo diferente de iniciar y detener inmediatamente. Estoy en contra de comenzar con éxito y silenciosamente parar. ExitCode se registrará en el registro de eventos, por lo que es posible que desee considerar configurarlo. No es obligatorio sin embargo. –

0

Use un ServiceController y deténgalo a través de eso, regrese inmediatamente.

Cuestiones relacionadas