Application.SessionEnding Evento
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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).