Compartilhar via


Application.SessionEnding Evento

Definição

Ocorre quando o usuário encerra a sessão do Windows fazendo logoff ou desligando o sistema operacional.

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

Exemplos

O exemplo a seguir demonstra como manipular o SessionEnding evento e permitir que o usuário o cancele.

<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

Comentários

Por padrão, um aplicativo é desligado quando a sessão do Windows termina, o que ocorre quando um usuário faz logoff ou é desligado. Quando isso acontece, o Windows solicita que cada aplicativo aberto seja desligado. No entanto, é possível que um aplicativo não esteja pronto para ser desligado quando isso ocorrer. Por exemplo, um aplicativo pode ter dados que estão em um estado inconsistente ou no meio de uma operação de execução longa. Nessas situações, pode ser desejável impedir que a sessão termine e pode ser mais desejável permitir que os usuários decidam se devem ou não deixar a sessão terminar.

Você pode detectar quando uma sessão termina manipulando o SessionEnding evento. Se um aplicativo precisar impedir que a sessão seja encerrada, o SessionEndingCancelEventArgs argumento passado para o manipulador de eventos expõe o Cancel que você definiu como true (o valor padrão é false).

Se SessionEnding for sem tratamento ou for tratado sem ser cancelado, Shutdown será chamado e o Exit evento será acionado.

Para obter mais informações sobre por que a sessão está terminando, um aplicativo pode inspecionar ReasonSessionEnding, que é um dos ReasonSessionEnding valores (ReasonSessionEnding.Logoff e ReasonSessionEnding.Shutdown).

SessionEnding não é gerado por aplicativos de console.

SessionEnding é gerado somente no thread que cria o Application objeto .

SessionEnding não é gerado para XBAPs (aplicativos de navegador XAML).

Aplica-se a

Confira também