Wie code ich ein watchdog-timer neu zu starten, ein Windows-Dienst?
Ich bin sehr interessiert in der Antwort auf eine andere Frage, watchdog-Timer für Windows-Dienste (siehe hier). Die Antwort fest:
Ich habe auch eine interne watchdog-system läuft in einem anderen thread. Dieser thread befasst sich mit den wichtigsten thread für Aktivitäten wie log-Ausgabe oder ein Umschalten der Veranstaltung. Wenn die Aktivität nicht gesehen, dann gilt die Dienstleistung als hing und ich das Herunterfahren des service.
In diesem Fall können Sie windows so konfigurieren, auto-restart ein eingestellt und klar das problem (solange es nicht eine "innere Logik" - Fehler).
Auch Dienstleistungen, die ich arbeiten mit text Protokolle, die geschrieben werden, um ein Protokoll. Neben Leistungen, die über zu "Schlaf ein bisschen", ich log die Zeit für die nächste aufwachen. Ich benutze MTAIL zu beobachten, ein Protokoll für die Ausgabe."
Kann jemand geben einige Beispiel-code, wie Sie ein internes watchdog in einem anderen thread läuft, da ich derzeit haben eine Aufgabe zu entwickeln, die ein windows-Dienst, der in der Lage sein sich selbst neu starten, falls es nicht, aufgehängt, etc.
Ich wirklich zu schätzen Ihre Hilfe.
Das wäre richtig: gehen Sie gerade nach oben. Nicht die Mühe zu Fragen, der rest von uns dummies.
Eigentlich war es John Dyer - siehe mein update zu der Frage.
Jetzt vielleicht wurde die Frage Anglisierte ein bisschen, wir könnten aufhören, downvoting und beginnen, Sie zu beantworten 🙂
Dies macht nicht gehören, auf den superuser. Es ist insbesondere zu Fragen, wie man code eine watchdog-Prozess.
InformationsquelleAutor | 2009-09-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin kein großer fan der Ausführung einer watchdog als ein thread in dem Prozess, den Sie gerade anschauen. Das bedeutet, dass wenn der gesamte Prozess hängt für einige Grund, warum der watchdog nicht funktioniert.
Wachhunde sind eine Idee gehoben aus der hardware-Welt, und Sie hatte Recht. Verwenden Sie eine externe Schaltung so einfach wie möglich (so kann es sein, das nachweislich korrekt). Typische watchdogs lief einfach ein timer und wenn der Prozess noch nicht etwas getan, bevor der timer abgelaufen ist (wie der Zugriff auf eine Speicherstelle die watchdog beobachtet wurde), war die ganze Sache zurückzusetzen. Wenn der watchdog wurde "gekickt", es würde den timer neu starten.
Den Akt des Prozesses treten die watchdog geschützt, dass der Prozess von Zusammenfassung Kündigung.
Mein Rat wäre, zu schreiben sehr einfache stand-alone-Programm, das nur überwacht, ein Ereignis (wie die Datei update-Zeit geändert wird). Wenn das Ereignis nicht auftreten, innerhalb der erforderlichen Zeit, zu töten den Prozess beobachtet (und damit Windows neu starten).
Dann haben die überwachten in regelmäßigen Abständen das Programm umschreiben, dass die Datei.
InformationsquelleAutor paxdiablo
Können Sie konfigurieren aus Dienst-Eigenschaften, um sich selbst neu starten, im Falle des Scheiterns
InformationsquelleAutor Arsen Mkrtchyan
Andere Ansätze, die Sie berücksichtigen sollten außerdem regelmäßig geändert wird, die "lastwritetime" einer Datei wäre, um eine ordnungsgemäße erstellen performance-counter oder sogar eine WMI-Objekt. Wir tun das später in unsere build-Infrastruktur, der 'trick' ist, um eine sinnvolle Arbeit Gerät in den service überwacht und Puls Ihren "Herzschlag" jedes mal, wenn eine Einheit beendet ist.
Den Vorteil von WMI oder Perf Zähler über eine Datei Ansatzes ist, dass Sie dann sichtbar zu einer ganzen Reihe von professionellen MIS /management-tools. Dies kann eine Menge Wert.
InformationsquelleAutor Tom Kirby-Green