Application.SessionEnding Evento
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Si verifica quando l'utente termina la sessione di Windows mediante disconnessione o arresto del sistema operativo.
public:
event System::Windows::SessionEndingCancelEventHandler ^ SessionEnding;
public event System.Windows.SessionEndingCancelEventHandler SessionEnding;
member this.SessionEnding : System.Windows.SessionEndingCancelEventHandler
Public Custom Event SessionEnding As SessionEndingCancelEventHandler
Tipo evento
Esempio
Nell'esempio seguente viene illustrato come gestire l'evento SessionEnding e consentire all'utente di annullarlo.
<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
Commenti
Per impostazione predefinita, un'applicazione viene arrestata al termine della sessione di Windows, che si verifica quando un utente si disconnette o si arresta. In questo caso, Windows chiede a ogni applicazione aperta di arrestarsi. Tuttavia, è possibile che un'applicazione non sia pronta per l'arresto in questo caso. Ad esempio, un'applicazione può avere dati in uno stato incoerente o nel corso di un'operazione a esecuzione prolungata. In queste situazioni, può essere preferibile impedire la fine della sessione e potrebbe essere più auspicabile consentire agli utenti di decidere se consentire o meno la fine della sessione.
È possibile rilevare quando una sessione termina gestendo l'evento SessionEnding . Se un'applicazione deve impedire la fine della sessione, l'argomento SessionEndingCancelEventArgs passato al gestore eventi espone l'oggetto Cancel impostato su true
(il valore predefinito è false
).
Se SessionEnding non viene gestito o viene gestito senza essere annullato, Shutdown viene chiamato e viene generato l'evento Exit .
Per ottenere altre informazioni sul motivo per cui la sessione termina, un'applicazione può esaminare ReasonSessionEnding, che è uno dei ReasonSessionEnding valori (ReasonSessionEnding.Logoff e ReasonSessionEnding.Shutdown).
SessionEnding non viene generato dalle applicazioni console.
SessionEnding viene generato solo sul thread che crea l'oggetto Application .
SessionEnding non viene generato per le applicazioni browser XAML (XBAP).