0

WindowsFormsアプリケーションは、サーバーに保存する情報を送信するためにWCFサービスを使用します。Windowsが起動し、ユーザーがログオンすると、動作を開始します。しかし、ユーザーがOSをシャットダウンすると、Windows(OS)は、アプリケーションのタスクを終了するための「タスク終了ウィンドウ」をユーザーに表示します。

  1. ウィンドウに「タスク終了ウィンドウ」が表示されるのはなぜですか?
  2. どうすれば処理できますか?
4

1 に答える 1

2

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ハンドラーで、システムのシャットダウンイベントが発生した場合の対処方法を決定できます。

于 2013-02-15T18:32:05.660 に答える