Application.SessionEnding Событие

Определение

Происходит, когда пользователь завершает сеанс Windows путем выхода из системы или завершения работы операционной системы.

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

Тип события

Примеры

В следующем примере показано, как обработать SessionEnding событие и разрешить пользователю отменить его.

<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

Комментарии

По умолчанию приложение завершает работу при завершении сеанса Windows, что происходит при отключении или завершении работы пользователя. В этом случае Windows просит каждое открытое приложение завершить работу. Тем не менее, возможно, что приложение может не быть готово к закрытию, когда это происходит. Например, приложение может иметь данные, которые имеют несогласованное состояние или в середине длительной операции. В таких ситуациях может потребоваться предотвратить завершение сеанса и может оказаться более желательным разрешить пользователям решить, следует ли разрешить сеансу завершиться.

Вы можете определить, когда сеанс заканчивается, обрабатывая SessionEnding событие. Если приложению необходимо предотвратить завершение сеанса, аргумент, передаваемый обработчику событий, SessionEndingCancelEventArgs предоставляет Cancel заданный параметр true (значение falseпо умолчанию — ).

Если SessionEnding необработанные или обрабатываются без отмены, Shutdown вызывается и Exit вызывается событие.

Чтобы получить дополнительные сведения о том, почему сеанс заканчивается, приложение может проверить ReasonSessionEnding, что является одним из ReasonSessionEnding значений (ReasonSessionEnding.Logoff и ReasonSessionEnding.Shutdown).

SessionEnding не вызывается консольными приложениями.

SessionEnding вызывается только в потоке, создающего Application объект.

SessionEnding не вызывается для приложений браузера XAML (XBAPs).

Применяется к

См. также раздел