Application.Exit Gebeurtenis

Definitie

Vindt plaats vlak voordat een toepassing wordt afgesloten en kan niet worden geannuleerd.

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

Gebeurtenistype

Voorbeelden

In het volgende voorbeeld ziet u hoe u:

  • De Exit gebeurtenis afhandelen.

  • Inspecteer en werk de ApplicationExitCode eigenschap van de ExitEventArgs.

  • Schrijf een vermelding naar een toepassingslogboek in geïsoleerde opslag.

  • De toepassingsstatus behouden in geïsoleerde opslag.

<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

Opmerkingen

Een toepassing kan om een van de volgende redenen worden afgesloten:

  • De Shutdown methode van het Application object wordt expliciet of zoals bepaald door de ShutdownMode eigenschap aangeroepen.

  • De gebruiker beëindigt de sessie door zich af te melden of af te sluiten.

U kunt detecteren wanneer de toepassing wordt afgesloten door de Exit gebeurtenis af te handelen en eventueel aanvullende verwerking uit te voeren.

U kunt ook de Exit afsluitcode van de toepassing controleren of wijzigen wanneer u deze niet expliciet hoeft aan te roepen Shutdown . De afsluitcode wordt weergegeven vanuit de ApplicationExitCode eigenschap van het ExitEventArgs argument dat wordt doorgegeven aan de Exit gebeurtenis-handler. Wanneer de toepassing niet meer wordt uitgevoerd, wordt de afsluitcode doorgegeven aan het besturingssysteem voor verdere verwerking.

Als uw toepassing de SessionEnding gebeurtenis afhandelt en deze vervolgens annuleert, Exit wordt deze niet gegenereerd en blijft de toepassing actief in overeenstemming met de afsluitmodus.

De afsluitcode kan worden ingesteld vanuit een XAML-browsertoepassing (XBAP), hoewel de waarde wordt genegeerd.

Voor XBAPs Exit wordt dit in de volgende omstandigheden gegenereerd:

  • Een XBAP wordt weggenavigeerd.
  • Wanneer het browsertabblad waarop de XBAP wordt gehost, wordt gesloten.
  • Wanneer de browser is gesloten.

In alle gevallen wordt de waarde van de ApplicationExitCode eigenschap genegeerd.

Zie Frequently asked questions about WPF browser-hosted applications (XBAP) voor meer informatie over XBAP-ondersteuning.

Van toepassing op

Zie ook