アプリケーションが調整を開始したときに、最後に実行したとき、クラッシュしたのか、正常に閉じたのかを知りたいです。アプリケーションはそれ自体を検出する必要があり、外部アプリケーションを使用してこれをチェックしないように注意してください。
C#を使用してそれを行うにはどうすればよいですか?
アプリケーションは、シャットダウン時に最後に行うこととして、ある種の永続ストレージに「正常にシャットダウン」フラグを設定する必要があります。
起動時に、このフラグが設定されているかどうかを確認してください。そうでない場合は、前回実行したときにクラッシュするか、強制的に終了しました。そうである場合は、現在の実行に備えてリセットします。
Program.csで使用できます
#if !DEBUG
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
Application.ThreadException += new ThreadExceptionEventHandler(Application_ThreadException);
#endif
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new FrmMain());
このようにして、すべてのエラーを処理し、それらをログに記録したり、重大な障害が発生した場合にアプリケーションを再起動したり、ユーザーのセッションを復元したりすることができます。未#if !DEBUG
処理の例外はすべてここにあるため、条件がないとデバッグが困難になります。