Application.SessionEnding Zdarzenie

Definicja

Występuje, gdy użytkownik kończy sesję systemu Windows, logując się lub zamykając system operacyjny.

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

Typ zdarzenia

Przykłady

W poniższym przykładzie pokazano, jak obsłużyć SessionEnding zdarzenie i zezwolić użytkownikowi na anulowanie go.

<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

Uwagi

Domyślnie aplikacja jest zamykana po zakończeniu sesji systemu Windows, która występuje, gdy użytkownik wyloguje się lub wyłącza. W takim przypadku system Windows prosi każdą otwartą aplikację o zamknięcie. Istnieje jednak możliwość, że aplikacja może nie być gotowa do zamknięcia, gdy tak się stanie. Na przykład aplikacja może mieć dane, które są w stanie niespójnym lub w środku długotrwałej operacji. W takich sytuacjach może być pożądane, aby zapobiec zakończeniu sesji i może być bardziej pożądane, aby umożliwić użytkownikom podjęcie decyzji, czy pozwolić sesji na zakończenie.

Możesz wykryć, kiedy sesja kończy się, obsługując SessionEnding zdarzenie. Jeśli aplikacja musi uniemożliwić zakończenie sesji, SessionEndingCancelEventArgs argument przekazywany do programu obsługi zdarzeń uwidacznia Cancel wartość ustawioną na true (wartość domyślna to false).

Jeśli SessionEnding jest nieobsługiwany lub jest obsługiwany bez anulowania, Shutdown jest wywoływany, a Exit zdarzenie jest zgłaszane.

Aby uzyskać więcej informacji o tym, dlaczego sesja kończy się, aplikacja może sprawdzić ReasonSessionEndingwartość , która jest jedną z ReasonSessionEnding wartości (ReasonSessionEnding.Logoff i ReasonSessionEnding.Shutdown).

SessionEnding program nie jest zgłaszany przez aplikacje konsolowe.

SessionEnding jest wywoływany tylko w wątku, który tworzy Application obiekt.

SessionEnding nie jest wywoływana dla aplikacji przeglądarki XAML (XBAPs).

Dotyczy

Zobacz też