Application.SessionEnding Evento
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Ocorre quando o utilizador termina a sessão do Windows ao desligar ou desligar o 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
Exemplos
O exemplo seguinte demonstra como gerir o SessionEnding evento e permitir que o utilizador 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
Observações
Por defeito, uma aplicação desliga-se quando a sessão do Windows termina, o que ocorre quando um utilizador faz logout ou encerra o dia. Quando isto acontece, o Windows pede a cada aplicação aberta para desligar. No entanto, é possível que uma aplicação não esteja pronta para desligar quando isso acontecer. Por exemplo, uma aplicação pode ter dados num estado inconsistente, ou no meio de uma operação de longa duração. Nestas situações, pode ser desejável impedir o fim da sessão, e pode ser mais desejável permitir aos utilizadores a opção de decidir se deixam ou não a sessão terminar.
Pode detetar quando uma sessão termina ao tratar do SessionEnding evento. Se uma aplicação precisar de impedir que a sessão termine, o SessionEndingCancelEventArgs argumento que é passado ao gestor de eventos expõe o Cancel que definiste para true (o valor padrão é false).
Se SessionEnding não for tratado, ou for tratado sem ser cancelado, Shutdown é chamado e o Exit evento é levantado.
Para obter mais informações sobre o motivo pelo qual a sessão está a terminar, uma aplicação pode inspecionar ReasonSessionEnding, que é um dos ReasonSessionEnding valores (ReasonSessionEnding.Logoff e ReasonSessionEnding.Shutdown).
SessionEnding não é levantado por aplicações de consola.
SessionEnding é elevado apenas no fio que cria o Application objeto.
SessionEnding não é levantado para aplicações de navegador XAML (XBAPs).