Application.Exit Application.Exit Application.Exit Application.Exit Event

Definition

Tritt kurz vor dem Herunterfahren einer Anwendung auf und kann nicht abgebrochen werden.Occurs just before an application shuts down, and cannot be canceled.

public:
 event System::Windows::ExitEventHandler ^ Exit;
public event System.Windows.ExitEventHandler Exit;
member this.Exit : System.Windows.ExitEventHandler 
Public Custom Event Exit As ExitEventHandler 

Beispiele

Im folgenden Beispiel wird Folgendes veranschaulicht:The following example demonstrates how to:

  • Behandeln Sie Exit das-Ereignis.Handle the Exit event.

  • Überprüfen und aktualisieren ApplicationExitCode Sie die-Eigenschaft von. ExitEventArgsInspect and update the ApplicationExitCode property of the ExitEventArgs.

  • Schreiben Sie einen Eintrag in ein Anwendungsprotokoll in isoliertem Speicher.Write an entry to an application log in isolated storage.

  • Speichert den Anwendungs Zustand in isoliertem Speicher.Persist the application state to isolated storage.

<Application x:Class="CSharp.App"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  StartupUri="MainWindow.xaml" 
  ShutdownMode="OnExplicitShutdown"
  Exit="App_Exit"
    >
</Application>
using System;
using System.Collections;
using System.Windows;
using System.IO;
using System.IO.IsolatedStorage;

namespace CSharp
{
    public enum ApplicationExitCode
    {
        Success = 0,
        Failure = 1,
        CantWriteToApplicationLog = 2,
        CantPersistApplicationState = 3
    }

    public partial class App : Application
    {
        void App_Exit(object sender, ExitEventArgs e)
        {
            try
            {
                // Write entry to application log
                if (e.ApplicationExitCode == (int)ApplicationExitCode.Success)
                {
                    WriteApplicationLogEntry("Failure", e.ApplicationExitCode);
                }
                else
                {
                    WriteApplicationLogEntry("Success", e.ApplicationExitCode);
                }
            }
            catch
            {
                // Update exit code to reflect failure to write to application log
                e.ApplicationExitCode = (int)ApplicationExitCode.CantWriteToApplicationLog;
            }

            // Persist application state
            try
            {
                PersistApplicationState();
            }
            catch
            {
                // Update exit code to reflect failure to persist application state
                e.ApplicationExitCode = (int)ApplicationExitCode.CantPersistApplicationState;
            }
        }

        void WriteApplicationLogEntry(string message, int exitCode)
        {
            // Write log entry to file in isolated storage for the user
            IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForAssembly();
            using (Stream stream = new IsolatedStorageFileStream("log.txt", FileMode.Append, FileAccess.Write, store))
            using (StreamWriter writer = new StreamWriter(stream))
            {
                string entry = string.Format("{0}: {1} - {2}", message, exitCode, DateTime.Now);
                writer.WriteLine(entry);
            }
        }

        void PersistApplicationState()
        {
            // Persist application state to file in isolated storage for the user
            IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForAssembly();
            using (Stream stream = new IsolatedStorageFileStream("state.txt", FileMode.Create, store))
            using (StreamWriter writer = new StreamWriter(stream))
            {
                foreach (DictionaryEntry entry in this.Properties)
                {
                    writer.WriteLine(entry.Value);
                }
            }
        }
    }
}

Imports System.Collections
Imports System.Windows
Imports System.IO
Imports System.IO.IsolatedStorage

Namespace VisualBasic
    Public Enum ApplicationExitCode
        Success = 0
        Failure = 1
        CantWriteToApplicationLog = 2
        CantPersistApplicationState = 3
    End Enum

    Partial Public Class App
        Inherits Application
        Private Sub App_Exit(ByVal sender As Object, ByVal e As ExitEventArgs)
            Try
                ' Write entry to application log
                If e.ApplicationExitCode = CInt(ApplicationExitCode.Success) Then
                    WriteApplicationLogEntry("Failure", e.ApplicationExitCode)
                Else
                    WriteApplicationLogEntry("Success", e.ApplicationExitCode)
                End If
            Catch
                ' Update exit code to reflect failure to write to application log
                e.ApplicationExitCode = CInt(ApplicationExitCode.CantWriteToApplicationLog)
            End Try

            ' Persist application state
            Try
                PersistApplicationState()
            Catch
                ' Update exit code to reflect failure to persist application state
                e.ApplicationExitCode = CInt(ApplicationExitCode.CantPersistApplicationState)
            End Try
        End Sub

        Private Sub WriteApplicationLogEntry(ByVal message As String, ByVal exitCode As Integer)
            ' Write log entry to file in isolated storage for the user
            Dim store As IsolatedStorageFile = IsolatedStorageFile.GetUserStoreForAssembly()
            Using stream As Stream = New IsolatedStorageFileStream("log.txt", FileMode.Append, FileAccess.Write, store)
                Using writer As New StreamWriter(stream)
                    Dim entry As String = String.Format("{0}: {1} - {2}", message, exitCode, Date.Now)
                    writer.WriteLine(entry)
                End Using
            End Using
        End Sub

        Private Sub PersistApplicationState()
            ' Persist application state to file in isolated storage for the user
            Dim store As IsolatedStorageFile = IsolatedStorageFile.GetUserStoreForAssembly()
            Using stream As Stream = New IsolatedStorageFileStream("state.txt", FileMode.Create, store)
                Using writer As New StreamWriter(stream)
                    For Each entry As DictionaryEntry In Me.Properties
                        writer.WriteLine(entry.Value)
                    Next entry
                End Using
            End Using
        End Sub
    End Class
End Namespace

Hinweise

Eine Anwendung kann aus einem der folgenden Gründe heruntergefahren werden:An application can shut down for either of the following reasons:

  • Die Shutdown -Methode Application des-Objekts wird entweder explizit oder entsprechend der ShutdownMode -Eigenschaft aufgerufen.The Shutdown method of the Application object is called, either explicitly or as determined by the ShutdownMode property.

  • Der Benutzer beendet die Sitzung, indem er sich abmeldet oder herunterfährt.The user ends the session by logging off or shutting down.

Sie können erkennen, wann das Herunterfahren der Anwendung Exit erfolgt, indem Sie das-Ereignis behandeln und ggf. zusätzliche Verarbeitungsschritte durchführen.You can detect when application shutdown occurs by handling the Exit event, and perform any additional processing as required.

Sie können auch verarbeiten Exit , um den Exitcode der Anwendung zu überprüfen oder zu ändern Shutdown , wenn Sie nicht explizit aufgerufen werden müssen.You can also handle Exit to inspect or change the application exit code when you don't need to call Shutdown explicitly. Der Exitcode wird von der ApplicationExitCode -Eigenschaft ExitEventArgs des-Arguments, das an den Exit -Ereignishandler übermittelt wird, verfügbar gemacht.The exit code is exposed from the ApplicationExitCode property of the ExitEventArgs argument that's passed to the Exit event handler. Wenn die Anwendung nicht mehr ausgeführt wird, wird der Exitcode für die nachfolgende Verarbeitung an das Betriebssystem übermittelt.When the application stops running, the exit code is passed to the operating system for subsequent processing.

Wenn die Anwendung das SessionEnding Ereignis verarbeitet und anschließend abbricht, wird nicht ausgelöst, Exit und die Anwendung wird weiterhin in Übereinstimmung mit dem Herunterfahren ausgeführt.If your application handles the SessionEnding event and subsequently cancels it, Exit is not raised and the application continues running in accordance with the shutdown mode.

Der Exitcode kann von einem XAML-Browseranwendung (XBAP)XAML browser application (XBAP)festgelegt werden, obwohl der Wert ignoriert wird.The exit code can be set from an XAML-Browseranwendung (XBAP)XAML browser application (XBAP), although the value is ignored.

Für XBAPsXBAPswirdinden folgendenSituationenausgelöst:ExitFor XBAPsXBAPs, Exit is raised in the following circumstances:

  • Eine XBAPXBAP wird von der navigiert.An XBAPXBAP is navigated away from.

  • In Internet Explorer 7Internet Explorer 7, wenn die Registerkarte geschlossen wird, XBAPXBAP auf der das gehostet wird.In Internet Explorer 7Internet Explorer 7, when the tab that is hosting the XBAPXBAP is closed.

  • Wenn der Browser geschlossen wird.When the browser is closed.

In allen Fällen wird der Wert ApplicationExitCode der-Eigenschaft ignoriert.In all cases, the value of the ApplicationExitCode property is ignored.

Gilt für:

Siehe auch