Поделиться через


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 (XBAP).

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

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