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í.
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).