Application.SessionEnding Událost

Definice

Nastane, když uživatel ukončí relaci Windows tím, že se odhlásí nebo vypne operační systém.

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

Event Type

Příklady

Následující příklad ukazuje, jak zpracovat SessionEnding událost a umožnit uživateli zrušit ji.

<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

Poznámky

Ve výchozím nastavení se aplikace vypne, když Windows relace skončí, což nastane, když se uživatel odhlásí nebo vypne. V takovém případě Windows požádá každou otevřenou aplikaci, aby se vypnula. Je však možné, že aplikace nemusí být připravená k vypnutí, když k tomu dojde. Aplikace může mít například data, která jsou v nekonzistentním stavu nebo uprostřed dlouhotrvající operace. V těchto situacích může být žádoucí zabránit ukončení relace a může být vhodnější umožnit uživatelům rozhodnout, zda se má relace ukončit, nebo ne.

Můžete zjistit, kdy relace skončí, zpracováním SessionEnding události. Pokud aplikace potřebuje zabránit ukončení relace, SessionEndingCancelEventArgs předá argument předaný obslužné rutině události, zobrazí nastavenou Cancel hodnotu true (výchozí hodnota je false).

Pokud SessionEnding je neošetřená nebo je zpracována bez zrušení, Shutdown je volána a Exit událost je vyvolána.

Chcete-li získat další informace o tom, proč relace končí, může aplikace zkontrolovat ReasonSessionEnding, což je jedna z ReasonSessionEnding hodnot (ReasonSessionEnding.Logoff a ReasonSessionEnding.Shutdown).

SessionEnding není vyvolána konzolovými aplikacemi.

SessionEnding je vyvolána pouze ve vlákně, které vytváří Application objekt.

SessionEnding pro aplikace prohlížeče XAML (XBAPs) se nevyvolá.

Platí pro

Viz také