Mögliches Duplikat:
So können Sie TaskScheduler zum Absturz bringen, wenn die Aufgabe ein anderes Ergebnis als 0 zurückgibt
Ich habe eine Windows-Aufgabe geplant, die eine von mir geschriebene Konsolenanwendung (.exe-Datei) ausführt. Ich habe die Aufgabe so eingestellt, dass sie bei einem Fehler nach 5 Minuten bis zu 3 Mal einen erneuten Versuch startet.
Der Taskplaner betrachtet die Aufgabe immer als erfolgreich abgeschlossen. Auch wenn die Anwendung eine Ausnahme auslöst.
Gibt es eine Möglichkeit, bei einer Exception etwas von der Anwendung zurückzugeben, um der Task mitzuteilen, dass sie fehlgeschlagen ist? Zum Beispiel ExitCode?
Oder gibt es eine bessere Möglichkeit, die Aufgabe so einzurichten, dass ich ihr mitteilen kann, dass ein Fehler aufgetreten ist?
Antwort1
Wenn möglich, könnten Sie versuchen, ein paar Minuten später eine weitere geplante Aufgabe einzurichten, die überprüft, ob die vorherige Aufgabe den gewünschten Effekt hatte (Überprüfung, ob X korrekt ausgeführt wird, ob die Variable X den gewünschten Wert hat, ob die letzte Änderung an der Datei X heute ist usw.). Wenn nicht, führt sie dieselbe Aufgabe wie die erste aus.
Ich vermute, dass die Funktion „Bei Fehler erneut versuchen“ nur dann funktioniert, wenn der Taskplaner die Aufgabe nicht starten konnte. Wenn dies der Fall war und das gestartete Programm fehlerhaft war, „ist das nicht sein Problem“. Sie fordern den Start an und der Start erfolgt, Punkt. So verstehe ich das.
Daher denke ich, dass die beste Möglichkeit darin besteht, eine oder mehrere zusätzliche Aufgaben einzurichten, die eine Prüfung durchführen.
Wenn das, was Sie tun (zum Beispiel eine Datei hochladen), nicht direkt überprüfbar ist, können Sie versuchen, der gestarteten App mitzuteilen, dass sie, wenn möglich, alle Ergebnisse bzw. Daten erfolgreicher Vorgänge protokollieren soll.
Wenn das nicht möglich ist, gibt es vielleicht andere Apps, die ein Programm überwachen und ausgeben können, was es tut. Apps, die Sie auch mit der ersten Aufgabe starten würden. Es wird kompliziert, aber. :/