Manejo de retrasos durante las solicitudes de detención / pausa en el servicio de Windows

Tengo una clase de servicio de Windows derivada deServiceBase que usa unSystem.Timers.Timer para ejecutar el código a intervalos frecuentes. Los manejadores deOnStop yOnPause use alguna señalización con el subproceso del temporizador para comprobar si el temporizador sigue funcionando y espera a que finalice.

¿Hay una forma recomendada de manejar los errores de retardo en esta situación, como si el manejador está esperando un tiempo inaceptablemente largo para que se detenga el subproceso del temporizador?

¿Debo seguir esperando hasta que el SCM se rinda (pero eso pondrá al servicio en un estado en el que no se puede hacer nada con el servicio, excepto el proceso y, a veces, un reinicio es la única manera de reiniciarlo)? O tal vez podría lanzar una excepción (¿esto lo dejaría en un estado similar, o simplemente abortaría la solicitud de detención / pausa)?

Preferiría si puedo rechazar la solicitud de pausa / parada y dejar que el SCM la deje en un estado en el que el usuario pueda intentar pausar / detener nuevamente. Podría abortar el subproceso del temporizador, pero a veces está bloqueado en otros recursos que preferiría que esperara hasta que se completara, y solo se registra un error con el administrador que puede intentar detenerse más tarde.

Respuestas a la pregunta(2)

Su respuesta a la pregunta