Manipulação de atrasos durante solicitações de parada / pausa no serviço Windows

Eu tenho uma classe de serviço do Windows derivada deServiceBase que usa umSystem.Timers.Timer para executar código em intervalos frequentes. Os manipuladores paraOnStop eOnPause use alguma sinalização com o encadeamento do cronômetro para verificar se o cronômetro ainda está em execução e aguarde o término.

Existe uma maneira recomendada de lidar com erros de atraso nessa situação, como se o manipulador estivesse aguardando um tempo inaceitavelmente longo para o encadeamento do timer parar?

Devo continuar esperando até que o SCM desista (mas isso colocará o serviço em um estado em que você não pode fazer nada com o serviço, exceto matar o processo, e às vezes uma reinicialização é a única maneira de reiniciá-lo)? Ou eu poderia lançar uma exceção, talvez (isso deixaria em um estado semelhante ou apenas abortaria a solicitação de parada / pausa)?

Eu preferiria se posso rejeitar a solicitação para pausar / parar e deixar o SCM deixá-lo em um estado em que o usuário possa tentar pausar / parar novamente. Eu poderia abortar o encadeamento do timer, mas às vezes ele está bloqueado em outros recursos que eu preferiria esperar até a conclusão e ter apenas um erro registrado com o administrador capaz de tentar uma parada mais tarde.

questionAnswers(2)

yourAnswerToTheQuestion