Compartir a través de


Application.SessionEnding Evento

Definición

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

Se aplica a

Consulte también