Ich habe ein Problem, das ich über einen Windows-Dienst, den ich in C# geschrieben habe, nicht herausfinden kann. Ich versuche zu warten, bis ein bestimmter Zeitraum für einen untergeordneten Prozess beendet wird, bevor ich gezwungen bin, ihn zu beenden und den Dienst zu beenden. Ich habe mein Timeout für irgendwo von 5 bis 15 Sekunden eingestellt und mein Dienst wartet die entsprechende Menge an Zeit und tötet dann das Kind und stoppt, wenn ich es über das MMC-Dienstfenster stoppe. Wenn ich jedoch den Computer herunterfahre, wird mein Dienst weggeblasen, bevor er richtig warten und stoppen kann. Ich habe gelesen, dass Windows eine Zeitüberschreitung von 30 Sekunden erlaubt, damit ein Dienst heruntergefahren wird, bevor es ihn wegbläst. Mein Code wird in weniger als 30 Sekunden ausgeführt, der Maximalwert beträgt etwa 20 Sekunden, je nachdem, wie oft ich den Timeout eingestellt habe.Erzwingen, dass Windows auf einen Dienst wartet, wenn es heruntergefahren wird
Ich habe versucht, die SetServiceStatus() -Funktion in der Win32 Api, aber es hat nicht die Funktion des Codes geändert. Ich habe überprüft, dass der Funktionsaufruf erfolgreich ist. Gibt es eine andere Möglichkeit, Windows zu warten, dass mein Dienst ordnungsgemäß heruntergefahren wird? Ich teste es in Windows 7 x86 und Windows Vista Sp1 x86.
+1: * Offensichtlich * die Lösung hier macht den Service weniger Zeit zu stoppen. Soooo viele Anwendungen ignorieren die Bedeutung dieser und. –