Anmutig Umgang Herunterfahren eines Windows-Dienstes

Davon ausgehen, dass Sie ein multi-threaded Windows service, der führt viele verschiedene Operationen, die einen fairen Anteil an Zeit, z.B. das extrahieren von Daten aus verschiedenen Daten speichert, analysieren diese Daten, die Entsendung von einem externen server etc. Operationen können durchgeführt werden, in verschiedenen Schichten, z.B. Anwendung, layer -, repository-Schicht-oder service-Schicht.

Irgendwann in die Lebensdauer dieser Windows-Dienst möchten Sie vielleicht, um es Herunterfahren oder neu starten, es durch Dienstleistungen.msc, aber wenn Sie nicht aufhören können, sind alle Operationen und beenden alle threads im Windows-Dienste innerhalb der Zeitspanne, die Dienstleistungen.msc erwartet, dass dies mit der stop-Prozedur, Sie werden hängen, und Sie müssen, um es zu töten mit dem Task-Manager.

Wegen der Frage oben erwähnt, meine Frage lautet wie folgt: Wie würden Sie implementieren eine fail-safe-Weg zum Umgang mit dem Herunterfahren Ihres Windows-Dienst? Ich habe eine volatile boolean, das wirkt wie ein shutdown-signal, aktiviert durch OnStop() in meinem service-Basis-Klasse, und sollte würdevoll halt meine main-Schleife, aber das ist nicht nichts Wert, wenn es eine operation, in einigen anderen Schicht, die unter, es ist Zeit, zu tun, was Sie, dass der Betrieb in der Lage ist.

Wie soll das gehandhabt werden? Ich bin momentan ratlos und brauche etwas kreativen input.

InformationsquelleAutor Maritim | 2014-08-07
Schreibe einen Kommentar