Application.SessionEnding イベント

定義

ユーザーがログオフするかオペレーティング システムをシャットダウンして、Windows セッションを終了するときに発生します。

public:
 event System::Windows::SessionEndingCancelEventHandler ^ SessionEnding;
public event System.Windows.SessionEndingCancelEventHandler SessionEnding;
member this.SessionEnding : System.Windows.SessionEndingCancelEventHandler 
Public Custom Event SessionEnding As SessionEndingCancelEventHandler 

イベントの種類

SessionEndingCancelEventHandler

次の例では、イベントを処理 SessionEnding し、ユーザーがイベントを取り消せるようにする方法を示します。

<Application 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Class="SDKSample.App"
    StartupUri="MainWindow.xaml"
    SessionEnding="App_SessionEnding" />
using System.Windows;

namespace SDKSample
{
    public partial class App : Application
    {
        void App_SessionEnding(object sender, SessionEndingCancelEventArgs e)
        {
            // Ask the user if they want to allow the session to end
            string msg = string.Format("{0}. End session?", e.ReasonSessionEnding);
            MessageBoxResult result = MessageBox.Show(msg, "Session Ending", MessageBoxButton.YesNo);

            // End session, if specified
            if (result == MessageBoxResult.No)
            {
                e.Cancel = true;
            }
        }
    }
}

Imports System.Windows

Namespace SDKSample
    Partial Public Class App
        Inherits Application
        Private Sub App_SessionEnding(ByVal sender As Object, ByVal e As SessionEndingCancelEventArgs)
            ' Ask the user if they want to allow the session to end
            Dim msg As String = String.Format("{0}. End session?", e.ReasonSessionEnding)
            Dim result As MessageBoxResult = MessageBox.Show(msg, "Session Ending", MessageBoxButton.YesNo)

            ' End session, if specified
            If result = MessageBoxResult.No Then
                e.Cancel = True
            End If
        End Sub
    End Class
End Namespace

注釈

既定では、Windows セッションの終了時にアプリケーションがシャットダウンされます。これは、ユーザーがログオフまたはシャットダウンしたときに発生します。 この場合、Windowsは開いている各アプリケーションにシャットダウンを求めます。 ただし、このような場合は、アプリケーションをシャットダウンする準備ができていない可能性があります。 たとえば、アプリケーションのデータが不整合な状態にある場合や、実行時間の長い操作の途中にある場合があります。 このような状況では、セッションの終了を防ぐことが望ましい場合があり、セッションを終了させるかどうかをユーザーが決定できるようにする方が望ましい場合があります。

イベントを処理 SessionEnding することで、セッションがいつ終了するかを検出できます。 アプリケーションがセッションの終了を防ぐ必要がある場合、SessionEndingCancelEventArgsイベント ハンドラーに渡される引数は、設定した引数をtrue公開Cancelします (既定値は falseです)。

未処理の場合、または取り消されずに処理された場合 SessionEnding は、呼び出され、 Shutdown イベントが発生します Exit

セッションが終了する理由に関する詳細情報を取得するために、アプリケーションは値の ReasonSessionEnding 1 つである (ReasonSessionEnding.Logoffおよび ReasonSessionEnding.Shutdown) を検査ReasonSessionEndingできます。

SessionEnding はコンソール アプリケーションによって発生しません。

SessionEnding は、オブジェクトを作成 Application するスレッドでのみ発生します。

SessionEnding は XAML ブラウザー アプリケーション (XBAP) では発生しません。

適用対象

こちらもご覧ください