Behandlung von Verzögerungen während Stopp- / Pausenanforderungen im Windows-Dienst

Ich habe eine Windows-Dienstklasse, die von abgeleitet istServiceBase das nutzt aSystem.Timers.Timer Code in regelmäßigen Abständen ausführen. Die Handler fürOnStop undOnPause Verwenden Sie eine Signalisierung mit dem Timer-Thread, um zu überprüfen, ob der Timer noch läuft und wartet, bis er beendet ist.

Gibt es eine empfohlene Methode zur Behandlung von Verzögerungsfehlern in dieser Situation, z. B. wenn der Handler unannehmbar lange auf das Stoppen des Timer-Threads wartet?

Sollte ich einfach weiter warten, bis der SCM aufgibt (aber dadurch wird der Dienst in einen Zustand versetzt, in dem Sie nichts mit dem Dienst anfangen können, außer den Prozess abzubrechen, und manchmal ist ein Neustart die einzige Möglichkeit, ihn neu zu starten)? Oder könnte ich vielleicht eine Ausnahme auslösen (würde dies den Status ähnlich belassen oder die Stopp- / Pausenanforderung einfach abbrechen)?

Ich würde es vorziehen, wenn ich die Anforderung zum Anhalten / Stoppen ablehnen und den SCM in einem Zustand belassen kann, in dem der Benutzer erneut versuchen kann, anzuhalten / zu stoppen. Ich konnte den Timer-Thread abbrechen, aber manchmal ist er für andere Ressourcen gesperrt, und ich würde lieber warten, bis der Vorgang abgeschlossen ist. Es ist nur ein Fehler beim Administrator protokolliert, der in der Lage ist, einen späteren Stopp zu versuchen.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage