自分で作成したコンソール アプリケーション (.exe ファイル) を実行する Windows タスクをスケジュールしています。失敗した場合は 5 分後に最大 3 回再試行するようにタスクを設定しました。
タスク スケジューラは、アプリケーションが例外をスローした場合でも、タスクが常に正常に完了したと認識します。
例外がスローされたときに、タスクが失敗したことを通知するためにアプリケーションから何かを返す方法はありますか。たとえば、ExitCode などでしょうか。
または、エラーが発生したことを通知できるようにタスクを設定するより良い方法はありますか?
答え1
可能であれば、数分後に別のスケジュールされたタスクを設定して、前のタスクが目的の効果をもたらしたかどうか (X が正しく実行されているかどうか、X 変数が目的の値になっているかどうか、X ファイルの最終変更が今日かどうかなど) を確認し、そうでない場合は最初のタスクと同じタスクを実行します。
私の推測では、「失敗時に再試行」機能は「タスク スケジューラがタスクを起動できなかった場合」に使用されます。起動できたとしても、起動したプログラムにバグがあった場合は、「それはタスク スケジューラの問題ではありません」。起動するように要求すれば、起動します。それが私の理解です。
したがって、チェックを実行する 1 つ以上の追加タスクを設定するのが最善の方法だと思います。
実行中の操作 (ファイルのアップロードなど) を直接確認できない場合は、可能であれば、起動したアプリに、成功した操作の結果または日付をログに記録するように指示することができます。
不可能な場合は、プログラムを監視してその動作を出力できる他のアプリがあるかもしれません。最初のタスクで起動するアプリも。複雑になりますが。:/