イベント記録の仕掛け
これまで何度かデータを取っているのですがすぐに忘れてしまうので再度データ取り。
アプリが起動している時に Windowsを終了したらどのイベントが走るのか。メインフォームが検知できる範囲でデータを取ってみました。
フォームが閉じるときのイベントは次の 3つで、発生順は以下のとおり。
1. CloseQuery (フォームが閉じようとしている)
2. Close (フォームが閉じるとき)
3. Destroy (フォームが破棄されるとき)
※1.は右上の✕ボタンを押したりした時に「終了しますか?」等で確認をしてキャンセルが可能なイベントです。
上記イベントを「✕ボタンで終了」「タスクマネージャーから終了」「アプリを起動させたままWindowsを終了」の 3パターンでデータを取ると
[✕ボタンで終了]
1, 2, 3 全てのイベントが発生
[タスクマネージャーから終了]
1, 2, 3 全てのイベントが発生
[アプリを起動させたままWindowsを終了]
1 の CloseQuery のみ発生
という結果でした。
ということで、自動保存の処理やフォームの位置情報等の記録は CloseQuery で行うのが正解ですね。