Sdílet prostřednictvím


Application.SessionEnding Událost

Definice

Vyvolá se, když uživatel ukončí relaci systému Windows odhlášením nebo vypnutím operačního systému.

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, aby ji zrušil.

<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 po ukončení relace Windows, k čemuž dochází, když se uživatel odhlásí nebo vypne. Když k tomu dojde, systém Windows požádá každou otevřenou aplikaci, aby se vypnula. Je však možné, že aplikace v takovém případě nemusí být připravená k vypnutí. 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ší povolit uživatelům možnost rozhodnout se, zda nechat relaci ukončit.

Ukončení relace můžete zjistit zpracováním SessionEnding události. Pokud aplikace potřebuje zabránit ukončení relace, SessionEndingCancelEventArgs zobrazí argument předaný obslužné rutině Cancel události hodnotu, na kterou jste nastavili 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.

Pokud chcete 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 konzolových aplikací není vyvolána.

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

SessionEnding není vyvolána pro aplikace prohlížeče XAML (XBAP).

Platí pro

Viz také