アプリ終了時のイベント

 
イベント記録の仕掛け 

これまで何度かデータを取っているのですがすぐに忘れてしまうので再度データ取り。

アプリが起動している時に Windowsを終了したらどのイベントが走るのか。メインフォームが検知できる範囲でデータを取ってみました。
フォームが閉じるときのイベントは次の 3つで、発生順は以下のとおり。

1. CloseQuery (フォームが閉じようとしている)
2. Close (フォームが閉じるとき)
3. Destroy (フォームが破棄されるとき)
※1.は右上の✕ボタンを押したりした時に「終了しますか?」等で確認をしてキャンセルが可能なイベントです。

上記イベントを「✕ボタンで終了」「タスクマネージャーから終了」「アプリを起動させたままWindowsを終了」の 3パターンでデータを取ると

[✕ボタンで終了]
 1, 2, 3 全てのイベントが発生

[タスクマネージャーから終了]
 1, 2, 3 全てのイベントが発生

[アプリを起動させたままWindowsを終了]
 1 の CloseQuery のみ発生

という結果でした。

ということで、自動保存の処理やフォームの位置情報等の記録は CloseQuery で行うのが正解ですね。