Windows Service wird er beim Shutdown beendet?

  • VB.NET
  • .NET (FX) 3.0–3.5

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Dodo.

    Windows Service wird er beim Shutdown beendet?

    Hey Leute,

    ich habe einen Windows Service der ein Log erstellt. In der OnStop() Methode speichere ich den erstellen Log auf der Platte ab, was auch funktioniert wenn ich den Dienst über die Verwaltung Beende. Beim herunterfahren wird allerdings nie ein Log erstellt und da frage ich mich ob Windows Dienste bei einem Shutdown überhaupt anständig gestoppt werden, wie es aussieht nicht und da wäre meine Frage an euch, ob ihr da eine Idee habt wie man das vernünftig realisieren könnte.
    In dem Event wo die Log Liste geschrieben wird jedesmal auch gleich abspeichern, weiß nicht ob das Sinnvoll ist, da es ein Asynchrones Event ist und es somit vorkommen könnte das 2 mal versucht wird in die Log Datei zu schreiben, was sicherlich zu Fehlern führen würde.

    Gruß Dodo
    Moin @Dodo , lange nix von Dir gehört.
    Ich hab mal ein Service-Test-Projekt angelegt, da fällt mir die CanShutdown-Property auf, die per Default auf False steht. Die also auf True setzen.
    Ich würde nun in alle Dienst-Prozeduren instanziieren und mal testen, ob er da vorbei kommt:
    OnStop(), Finalize(), Dispose().
    Aber ich denke mal, dass Du das alles schon gemacht hast. :/
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hey Rod,

    jupps hatte mich ja aus VB zurück gezogen und mehr mit PHP und Java gemacht. Aber aus aktuellem Anlass muss ichs leider nochmal nutzen weil nur in VB weiß ich wie relativ einfach Dienste proggen kann ;)

    Diese Property is mir noch gar nicht aufgefallen aber werde sie mal anstellen und schauen ob es was bringt. Die anderen Handler habe ich ehrlich gesagt noch nicht getestet, denn als ich dne Dienst erstellt habe, waren da ja gleich OnStart() und OnStop() Methoden wo ich annahm das wird scohn seine richtigkeit damit haben und die werden ja auch ausgeführt, nur eben leider nur manuell und da war ich mir nicht sicher ob Windows Dienste dann richtig Beendet oder killt oder sowas ^^

    Werde ich demnächst mal ausprobieren mit den neuen Erkenntnissen und hoffe dass er dann richtig funktioniert, vielen Dank dir aufjedenflal schonmal.

    gruß Dodo
    Du musst bei SetServiceStatus das Flag SERVICE_ACCEPT_SHUTDOWN angeben.
    Ich bin mir nicht sicher, ob du da möglicherweise den Designer-Code modifizieren musst oder ob das schon mit dem von Rod erwähnten Flag funktioniert.

    msdn.microsoft.com/en-us/libra…op/ms685149(v=vs.85).aspx
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Hmm ... leider hat weder das CanShutdown noch die Finalize oder Dispose Methode den gewünschten Erfolg erzielt.

    Ich werde es nun so lösen, das jedesmal wenn ein Ereignis auftritt, was gespeichert werden soll, dies gleich gemacht wird, natürlich mit FileLock, fall 2 oder Mehr Events versuchen in die Datei zu schreiben.
    Da es allerdings nicht so viele Events sind die gefeuert werden geht das denke ich in Ordnung.

    Danke trotzdem an euch für die Hilfe =)