Application.SessionEnding Événement

Définition

Se produit quand l’utilisateur met fin à la session Windows en se déconnectant ou en arrêtant le système d’exploitation.

public:
 event System::Windows::SessionEndingCancelEventHandler ^ SessionEnding;
public event System.Windows.SessionEndingCancelEventHandler SessionEnding;
member this.SessionEnding : System.Windows.SessionEndingCancelEventHandler 
Public Custom Event SessionEnding As SessionEndingCancelEventHandler 

Type d'événement

Exemples

L’exemple suivant montre comment gérer l’événement SessionEnding et autoriser l’utilisateur à l’annuler.

<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

Remarques

Par défaut, une application s’arrête à la fin de la session Windows, ce qui se produit lorsqu’un utilisateur se déconnecte ou s’arrête. Dans ce cas, Windows demande à chaque application ouverte de s’arrêter. Toutefois, il est possible qu’une application ne soit pas prête à s’arrêter lorsque cela se produit. Par exemple, une application peut avoir des données qui sont dans un état incohérent ou au milieu d’une opération de longue durée. Dans ce cas, il peut être souhaitable d’empêcher la fin de la session et peut être plus souhaitable de permettre aux utilisateurs de décider s’il faut ou non laisser la session se terminer.

Vous pouvez détecter quand une session se termine en gérant l’événement SessionEnding . Si une application doit empêcher la session de se terminer, l’argument SessionEndingCancelEventArgs passé au gestionnaire d’événements expose le Cancel sur lequel vous avez défini true (la valeur par défaut est false).

Si SessionEnding n’est pas pris en charge ou est géré sans être annulé, Shutdown est appelé et l’événement Exit est déclenché.

Pour obtenir plus d’informations sur la raison pour laquelle la session se termine, une application peut inspecter ReasonSessionEnding, qui est l’une ReasonSessionEnding des valeurs (ReasonSessionEnding.Logoff et ReasonSessionEnding.Shutdown).

SessionEnding n’est pas déclenché par les applications console.

SessionEnding est déclenché uniquement sur le thread qui crée l’objet Application .

SessionEnding n’est pas déclenché pour les applications de navigateur XAML (XBAPs).

S’applique à

Voir aussi