2009-01-02 10 views

Respuesta

4

No es estrictamente así, solo causaría problemas si la excepción no se trata.

4

Si la excepción no se detecta y las burbujas regresan al método OnStart(), se bloqueará el servicio. Por lo general, se mostrará un mensaje en el registro de eventos de Windows similar al siguiente:.

"El servicio de MyServiceName terminó inesperadamente Se ha hecho esta vez (s) x

+0

He envuelto todo el método que se ejecuta cuando el temporizador transcurre en un try/catch, sin obtener ningún error, pero mi servicio está bloqueado. – Blankman

+0

¿Qué quiere decir con "jamming"? – bobwienholt

+0

bob: me refiero a que deja de procesar (mover archivos desde una carpeta). – Blankman

2

Si usted está lanzando la excepción. Catch, y no hay nada encima para volver a capturarlo, entonces eso hará que se detenga el servicio. El método OnStart() necesita un try/catch. Si no quiere detener el servicio cuando ocurre una excepción, entonces necesita manejarlo (registrarlo y continuar, o lo que sea).

Mi preferencia sería manejar las excepciones esperadas, y tener excepciones inesperadas hacen que el servicio se detenga, o al menos se detenga/reinicie automáticamente. Lo inesperado sucede, su servicio se ejecutará en un estado desconocido, y quién sabe lo que hará.

3

Nos encontramos con el problema de una excepción no atrapada en un hilo secundario que hace que el servicio se detenga sin proporcionar ninguna información sobre lo que está causando la excepción. Usamos este método para averiguar el origen de la excepción.

Puede poner un controlador en el servicio para detectar todas las excepciones no controladas (incluidos todos los subprocesos del servicio). En VB.NET, deberá agregar un controlador para AppDomain.CurrentDomain.UnhandledException. Es probable que sea similar en C#. A continuación, detectará todo lo que aparezca después de su inicio. Puede elegir consumirlo allí o permitir que bloquee el servicio desde allí.

+0

mi servicio está extrayendo de un grupo de subprocesos, por lo que creo que su sugerencia lo ayudará. – Blankman

+1

"Es probable que sea similar en C#" :) –

+0

@Ronnie: Sí ... es triste que haya que hacer una declaración como esa ... –

Cuestiones relacionadas