Application.SessionEnding Evento
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Se produce cuando el usuario finaliza la sesión de Windows cerrando sesión o apagando el 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 de evento
Ejemplos
En el ejemplo siguiente se muestra cómo controlar el SessionEnding evento y permitir al usuario cancelarlo.
<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
Comentarios
De forma predeterminada, una aplicación se cierra cuando finaliza la sesión de Windows, que se produce cuando un usuario cierra sesión o se apaga. Cuando esto sucede, Windows pide a cada aplicación abierta que se apague. Sin embargo, es posible que una aplicación no esté lista para apagarse cuando esto ocurre. Por ejemplo, una aplicación puede tener datos que están en un estado incoherente o en medio de una operación de larga duración. En estas situaciones, puede ser conveniente impedir que finalice la sesión y puede ser más deseable permitir a los usuarios decidir si quieres o no dejar que finalice la sesión.
Puede detectar cuándo finaliza una sesión controlando el SessionEnding evento. Si una aplicación necesita impedir que la sesión finalice, el SessionEndingCancelEventArgs argumento que se pasa al controlador de eventos expone el Cancel valor establecido true
en (el valor predeterminado es false
).
Si SessionEnding no se controla o se controla sin cancelarse, Shutdown se llama a y se genera el Exit evento.
Para obtener más información sobre por qué finaliza la sesión, una aplicación puede inspeccionar ReasonSessionEnding, que es uno de los ReasonSessionEnding valores (ReasonSessionEnding.Logoff y ReasonSessionEnding.Shutdown).
SessionEnding no se genera mediante aplicaciones de consola.
SessionEnding se genera solo en el subproceso que crea el Application objeto .
SessionEnding no se genera para aplicaciones de explorador XAML (XBAP).