| 

.NET C# Java Javascript Exception

2
Von Zeit zu Zeit crasht einer meiner installierten Dienste, statt ordnungsgemäß herunterzufahren. Wenn er das tut, verbleibt eine Lock-Datei.

Der nächste Start des Dienstes schlägt dann fehlt, weil die Lock-Datei noch vorhanden ist - fälschlicherweise.

Eine simple Abhilfe wäre, die Lockdatei direkt vor dem Starten des Dienstes automatisch zu löschen. Kann ich das irgendwie entweder mit Bordmitteln von Windows einstellen, oder aber gibt es eine programmatische Lösung dafür? Quasi so was wie ein Pre-Service-Hook?
17.06.2011
Golo Roden 2,7k 3 9
3 Antworten
4
Eine andere Möglichkeit ist noch die Bordmittel von Windows zu nutzen. Bei jedem Dienst kannst du in den Eigenschaften auf dem Reiter "Wiederherstellung" Aktionen durchführen. Eine Aktion davon ist "Programm ausführen". D.h., bei einem Fehler beim Starten, startest du wiederum ein Programm, welches die Lock Datei löscht und dann wird der Dienst wieder versucht zu starten.

Habe ich so noch nie verwendet, sollte aber eigentlich funktionieren.
18.06.2011
Khalid 490 2
Das klingt doch schon mal ziemlich gut :-)

So wie ich das sehe, wird allerdings dann bei einem Fehler nur versucht, das Programm auszuführen, nicht aber der Dienst mehr neugestartet, oder?
Golo Roden 18.06.2011
Möglich, wobei das auch ja nicht schlimm wäre. Das Program kann ja den Dienst dann einfach wieder starten.
Khalid 19.06.2011
1
Ist das ein von Dir selbst geschriebener Dienst?
Wenn ja, kannst Du doch versuchen die Lock-Datei als erste Aktion im OnStart()-Event zu löschen, falls noch eine alte Datei da ist.
Eine andere Lösung wäre vielleicht einen Dienst vor dem eigentlichen Dienst zu starten, der die alte Lockdatei löscht und erst dann anschließend den eigentlichen Dienst startet, so dass dieser also nicht mehr direkt durch Windows gestartet wird.
17.06.2011
Carsten Ilwig 337 1 1 6
Nein, der Dienst ist nicht selbstgeschrieben - sonst wäre das Problem ja ganz einfach zu lösen ;-)
Golo Roden 18.06.2011
0
Den Dienst über ein cmd-File mit 'net start' starten und vorher die Datei aus dem Script heraus löschen wenn vorhanden.
20.06.2011

Stelle deine Windows-Frage jetzt!