WindowsFormsアプリケーションは、サーバーに保存する情報を送信するためにWCFサービスを使用します。Windowsが起動し、ユーザーがログオンすると、動作を開始します。しかし、ユーザーがOSをシャットダウンすると、Windows(OS)は、アプリケーションのタスクを終了するための「タスク終了ウィンドウ」をユーザーに表示します。
- ウィンドウに「タスク終了ウィンドウ」が表示されるのはなぜですか?
- どうすれば処理できますか?
SystemEvents.SessionEnding
あなたはイベントを探しています。おそらく、実行中の WCF クエリもキャンセルする必要があります。
これが自分のFrom.Closing
イベントであることを既に処理している場合は、代わりに MSDN の次のスニペットを使用できます。
private static int WM_QUERYENDSESSION = 0x11;
private static bool systemShutdown = false;
protected override void WndProc(ref System.Windows.Forms.Message m)
{
if (m.Msg == WM_QUERYENDSESSION)
{
systemShutdown = true;
}
// If this is WM_QUERYENDSESSION, the closing event should be
// raised in the base WndProc.
base.WndProc(ref m);
}
次に、Form.Closing
ハンドラーで、システムのシャットダウンイベントが発生した場合の対処方法を決定できます。