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

定義

アプリケーションがシャットダウンする直前に発生し、キャンセルできません。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 

次の例について説明する方法。The following example demonstrates how to:

  • 処理、Exitイベント。Handle the Exit event.

  • 検査し、更新、ApplicationExitCodeのプロパティ、ExitEventArgsします。Inspect and update the ApplicationExitCode property of the ExitEventArgs.

  • 分離ストレージ内のアプリケーション ログにエントリを記述します。Write an entry to an application log in isolated storage.

  • 分離ストレージへのアプリケーションの状態を保持します。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 Microsoft.VisualBasic
Imports System
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

注釈

次の理由のいずれかのアプリケーションがシャット ダウンをできます。An application can shut down for either of the following reasons:

  • Shutdownのメソッド、Applicationによって明示的にまたは決定されるオブジェクトが呼び出されます、ShutdownModeプロパティ。The Shutdown method of the Application object is called, either explicitly or as determined by the ShutdownMode property.

  • ユーザーは、ログオフまたはシャット ダウンによって、セッションを終了します。The user ends the session by logging off or shutting down.

処理することにより、アプリケーションのシャット ダウンが発生したときに検出することができます、Exitイベント、および必要に応じて、追加の処理を実行します。You can detect when application shutdown occurs by handling the Exit event, and perform any additional processing as required.

処理することもできますExit検査またはを呼び出す必要のないときに、アプリケーションの終了コードを変更するShutdown明示的にします。You can also handle Exit to inspect or change the application exit code when you don't need to call Shutdown explicitly. 終了コードが公開されている、ApplicationExitCodeのプロパティ、ExitEventArgsに渡される引数、Exitイベント ハンドラー。The exit code is exposed from the ApplicationExitCode property of the ExitEventArgs argument that's passed to the Exit event handler. アプリケーションでは、実行が停止したら、終了コードは、後続の処理、オペレーティング システムに渡されます。When the application stops running, the exit code is passed to the operating system for subsequent processing.

アプリケーションで処理する場合、SessionEndingイベント後でそれを取り消すとExitは発生しませんし、アプリケーションがシャット ダウン モードに従ってで実行を続けます。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.

終了コードを設定することができます、XAML ブラウザー アプリケーション (XBAP)XAML browser application (XBAP)値は無視されます。The exit code can be set from an XAML ブラウザー アプリケーション (XBAP)XAML browser application (XBAP), although the value is ignored.

XBAPXBAPsExitで、次の状況が発生します。For XBAPXBAPs, Exit is raised in the following circumstances:

  • XBAPXBAPから移動します。An XBAPXBAP is navigated away from.

  • Internet Explorer 7Internet Explorer 7、ときに、タブをホストしている、XBAPXBAPが閉じられました。In Internet Explorer 7Internet Explorer 7, when the tab that is hosting the XBAPXBAP is closed.

  • ブラウザーが閉じられた。When the browser is closed.

すべてのケースの値で、ApplicationExitCodeプロパティは無視されます。In all cases, the value of the ApplicationExitCode property is ignored.

適用対象

こちらもご覧ください