Application.Exit Zdarzenie
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Występuje tuż przed zamknięciem aplikacji i nie można jej anulować.
public:
event System::Windows::ExitEventHandler ^ Exit;
public event System.Windows.ExitEventHandler Exit;
member this.Exit : System.Windows.ExitEventHandler
Public Custom Event Exit As ExitEventHandler
Typ zdarzenia
Przykłady
W poniższym przykładzie pokazano, jak:
Obsługa zdarzenia Exit .
Sprawdź i zaktualizuj ApplicationExitCode właściwość .ExitEventArgs
Zapisz wpis w dzienniku aplikacji w izolowanym magazynie.
Utrwał stan aplikacji do izolowanego magazynu.
<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
Uwagi
Aplikacja może zostać zamknięta z jednego z następujących powodów:
Metoda ShutdownApplication obiektu jest wywoływana, jawnie lub określona przez ShutdownMode właściwość.
Użytkownik kończy sesję, logując się lub zamykając.
Można wykryć, kiedy nastąpi zamknięcie aplikacji, obsługując Exit zdarzenie i wykonując wszelkie dodatkowe operacje przetwarzania zgodnie z potrzebami.
Możesz również obsługiwać Exit inspekcję lub zmianę kodu zakończenia aplikacji, gdy nie trzeba wywoływać Shutdown jawnie. Kod zakończenia jest uwidaczniany z ApplicationExitCode właściwości argumentu ExitEventArgs przekazanego do procedury obsługi zdarzeń Exit . Gdy aplikacja przestanie działać, kod zakończenia jest przekazywany do systemu operacyjnego w celu późniejszego przetwarzania.
Jeśli aplikacja obsługuje zdarzenie, a następnie je anuluje SessionEnding , nie zostanie podniesiona, Exit a aplikacja będzie działać zgodnie z trybem zamykania.
Kod zakończenia można ustawić z poziomu aplikacji przeglądarki XAML (XBAP), chociaż wartość jest ignorowana.
W przypadku XBAPs Exit jest zgłaszany w następujących okolicznościach:
- Punkt XBAP jest odchodzi od.
- Po zamknięciu karty przeglądarki obsługującej program XBAP.
- Po zamknięciu przeglądarki.
We wszystkich przypadkach wartość ApplicationExitCode właściwości jest ignorowana.
Aby uzyskać więcej informacji na temat obsługi XBAP, zobacz Często zadawane pytania dotyczące aplikacji hostowanych w przeglądarce WPF (XBAP).