Application.SessionEnding Událost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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á.