Application.SessionEnding Olay

Tanım

Kullanıcı, oturumu kapatarak veya işletim sistemini kapatarak Windows oturumunu sonlandırdığında gerçekleşir.

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

Olay Türü

Örnekler

Aşağıdaki örnek, olayın nasıl işlenip SessionEnding kullanıcının iptaline izin verilip ve edilmeyebilmesini gösterir.

<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

Açıklamalar

Varsayılan olarak, bir kullanıcı oturumu kapattığında veya kapattığında oluşan Windows oturumu sona erdiğinde uygulama kapanır. Bu durumda, Windows açık olan her uygulamanın kapatılmasını ister. Ancak, bu durum oluştuğunda bir uygulama kapanmaya hazır olmayabilir. Örneğin, bir uygulama tutarsız durumda veya uzun süre çalışan bir işlemin ortasında olan verilere sahip olabilir. Bu gibi durumlarda, oturumun sona ermesini önlemek ve kullanıcıların oturumun bitmesine izin verip vermemeye karar verme seçeneğine izin vermek daha cazip olabilir.

Olayı işleyerek SessionEnding oturumun ne zaman bittiğini algılayabilirsiniz. Bir uygulamanın oturumun sona ermesini engellemesi gerekiyorsa, SessionEndingCancelEventArgs olay işleyicisine geçirilen bağımsız değişken olarak ayarladığınız true öğesini kullanıma sunar Cancel (varsayılan değer olurfalse).

İşlenmemişse veya iptal edilmeden işlenirse SessionEnding çağrılır Shutdown ve Exit olay tetiklenir.

Oturumun neden sona erdiği hakkında daha fazla bilgi edinmek için, bir uygulama , (ReasonSessionEnding.Logoff ve ReasonSessionEnding.Shutdown) değerlerinden biri ReasonSessionEnding olan öğesini inceleyebilirReasonSessionEnding.

SessionEnding konsol uygulamaları tarafından tetiklenmez.

SessionEnding yalnızca nesnesini oluşturan iş parçacığında Application oluşturulur.

SessionEnding XAML tarayıcı uygulamaları (XBAP) için tetiklenmez.

Şunlara uygulanır

Ayrıca bkz.