Share via


Application.Exit Kejadian

Definisi

Terjadi tepat sebelum aplikasi dimatikan dan tidak dapat dibatalkan.

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

Jenis Acara

Contoh

Contoh berikut menunjukkan cara:

  • Exit Tangani peristiwa.

  • Periksa dan perbarui ApplicationExitCode properti dari ExitEventArgs.

  • Tulis entri ke log aplikasi di penyimpanan terisolasi.

  • Pertahankan status aplikasi ke penyimpanan terisolasi.

<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

Keterangan

Aplikasi dapat dimatikan karena salah satu alasan berikut:

  • Metode Shutdown objek dipanggil Application , baik secara eksplisit atau seperti yang ShutdownMode ditentukan oleh properti .

  • Pengguna mengakhiri sesi dengan keluar atau mematikan.

Anda dapat mendeteksi kapan pematian aplikasi terjadi dengan menangani Exit peristiwa, dan melakukan pemrosesan tambahan apa pun sesuai kebutuhan.

Anda juga dapat menangani Exit untuk memeriksa atau mengubah kode keluar aplikasi saat Anda tidak perlu memanggil Shutdown secara eksplisit. Kode keluar diekspos dari ApplicationExitCode properti ExitEventArgs argumen yang diteruskan ke penanganan Exit aktivitas. Ketika aplikasi berhenti berjalan, kode keluar diteruskan ke sistem operasi untuk pemrosesan berikutnya.

Jika aplikasi Anda menangani SessionEnding peristiwa dan kemudian membatalkannya, Exit tidak dinaikkan dan aplikasi terus berjalan sesuai dengan mode matikan.

Kode keluar dapat diatur dari aplikasi browser XAML (XBAP), meskipun nilainya diabaikan.

Untuk XBAP, Exit dimunculkan dalam keadaan berikut:

  • XBAP dinavigasi jauh dari.
  • Ketika tab browser yang menghosting XBAP ditutup.
  • Ketika browser ditutup.

Dalam semua kasus, nilai ApplicationExitCode properti diabaikan.

Untuk informasi selengkapnya tentang dukungan XBAP, lihat Tanya jawab umum tentang aplikasi yang dihosting browser WPF (XBAP).

Berlaku untuk

Lihat juga