Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Tritt ein, wenn die Anwendung gerade beendet wird.
Namespace: System.Windows.Forms
Assembly: System.Windows.Forms (in system.windows.forms.dll)
Syntax
'Declaration
Public Shared Event ApplicationExit As EventHandler
'Usage
Dim handler As EventHandler
AddHandler Application.ApplicationExit, handler
public static event EventHandler ApplicationExit
public:
static event EventHandler^ ApplicationExit {
void add (EventHandler^ value);
void remove (EventHandler^ value);
}
/** @event */
public static void add_ApplicationExit (EventHandler value)
/** @event */
public static void remove_ApplicationExit (EventHandler value)
JScript unterstützt die Verwendung von Ereignissen, aber nicht die Deklaration von neuen Ereignissen.
Hinweise
Der Ereignishandler muss an das Exit-Ereignis angefügt werden, um nicht behandelte, erforderliche Aufgaben durchzuführen, bevor die Anwendung beendet wird. Sie können von dieser Anwendung geöffnete Dateien schließen oder Objekte freigeben, die von der Garbage Collection nicht freigegeben wurden.
Da es sich um ein statisches Ereignis handelt, müssen Sie die Anbindung aller Ereignishandler trennen, die im ApplicationExit-Ereignishandler selbst an dieses Ereignis angefügt sind. Wenn Sie die Anbindung dieser Handler nicht trennen, bleiben sie an das Ereignis angefügt und belegen weiterhin Speicher.
Beispiel
Im folgenden Codebeispiel werden zwei Formulare angezeigt, und die Anwendung wird beendet, wenn beide Formulare geschlossen werden. Beim Starten und Beenden der Anwendung wird die Position jedes Formulars gespeichert. In diesem Beispiel wird veranschaulicht, wie mithilfe des ApplicationExit-Ereignisses ermittelt wird, wann die Formularpositionen für die Datei beibehalten werden sollen und wann der FileStream geschlossen werden soll.
Die MyApplicationContext-Klasse erbt von ApplicationContext und verfolgt das Schließen jedes Formulars. Außerdem wird der aktuelle Thread beendet, wenn beide geschlossen wurden. Die Klasse speichert die Position jedes Formulars, wenn es geschlossen wird. Wenn das ApplicationExit-Ereignis eintritt, schreibt die Klasse die Positionen jedes einzelnen Formulars für den Benutzer in die Datei. Die Formularpositionsdaten werden in der Datei appdata.txt gespeichert, die an dem von UserAppDataPath bestimmten Speicherort erstellt wird. Die Main-Methode ruft Application.Run(context) auf, um die Anwendung zu starten, wenn ApplicationContext angegeben ist.
Dieser Code ist ein Auszug aus dem Beispiel in der Übersicht zur ApplicationContext-Klasse. Den vollständigen Code finden Sie unter ApplicationContext.
Public Sub New()
MyBase.New()
formCount = 0
' Handle the ApplicationExit event to know when the application is exiting.
AddHandler Application.ApplicationExit, AddressOf OnApplicationExit
Try
' Create a file that the application will store user specific data in.
userData = New FileStream(Application.UserAppDataPath + "\appdata.txt", FileMode.OpenOrCreate)
Catch e As IOException
' Inform the user that an error occurred.
MessageBox.Show("An error occurred while attempting to show the application." + _
"The error is:" + e.ToString())
' Exit the current thread instead of showing the windows.
ExitThread()
End Try
' Create both application forms and handle the Closed event
' to know when both forms are closed.
form1 = New AppForm1()
AddHandler form1.Closed, AddressOf OnFormClosed
AddHandler form1.Closing, AddressOf OnFormClosing
formCount = formCount + 1
form2 = New AppForm2()
AddHandler form2.Closed, AddressOf OnFormClosed
AddHandler form2.Closing, AddressOf OnFormClosing
formCount = formCount + 1
' Get the form positions based upon the user specific data.
If (ReadFormDataFromFile()) Then
' If the data was read from the file, set the form
' positions manually.
form1.StartPosition = FormStartPosition.Manual
form2.StartPosition = FormStartPosition.Manual
form1.Bounds = form1Position
form2.Bounds = form2Position
End If
' Show both forms.
form1.Show()
form2.Show()
End Sub
Private Sub OnApplicationExit(ByVal sender As Object, ByVal e As EventArgs)
' When the application is exiting, write the application data to the
' user file and close it.
WriteFormDataToFile()
Try
' Ignore any errors that might occur while closing the file handle.
userData.Close()
Catch
End Try
End Sub
private MyApplicationContext() {
formCount = 0;
// Handle the ApplicationExit event to know when the application is exiting.
Application.ApplicationExit += new EventHandler(this.OnApplicationExit);
try {
// Create a file that the application will store user specific data in.
userData = new FileStream(Application.UserAppDataPath + "\\appdata.txt", FileMode.OpenOrCreate);
} catch(IOException e) {
// Inform the user that an error occurred.
MessageBox.Show("An error occurred while attempting to show the application." +
"The error is:" + e.ToString());
// Exit the current thread instead of showing the windows.
ExitThread();
}
// Create both application forms and handle the Closed event
// to know when both forms are closed.
form1 = new AppForm1();
form1.Closed += new EventHandler(OnFormClosed);
form1.Closing += new CancelEventHandler(OnFormClosing);
formCount++;
form2 = new AppForm2();
form2.Closed += new EventHandler(OnFormClosed);
form2.Closing += new CancelEventHandler(OnFormClosing);
formCount++;
// Get the form positions based upon the user specific data.
if (ReadFormDataFromFile()) {
// If the data was read from the file, set the form
// positions manually.
form1.StartPosition = FormStartPosition.Manual;
form2.StartPosition = FormStartPosition.Manual;
form1.Bounds = form1Position;
form2.Bounds = form2Position;
}
// Show both forms.
form1.Show();
form2.Show();
}
private void OnApplicationExit(object sender, EventArgs e) {
// When the application is exiting, write the application data to the
// user file and close it.
WriteFormDataToFile();
try {
// Ignore any errors that might occur while closing the file handle.
userData.Close();
} catch {}
}
MyApplicationContext()
{
formCount = 0;
// Handle the ApplicationExit event to know when the application is exiting.
Application::ApplicationExit += gcnew EventHandler( this, &MyApplicationContext::OnApplicationExit );
try
{
// Create a file that the application will store user specific data in.
userData = gcnew FileStream( String::Concat( Application::UserAppDataPath, "\\appdata.txt" ),FileMode::OpenOrCreate );
}
catch ( IOException^ e )
{
// Inform the user that an error occurred.
MessageBox::Show( "An error occurred while attempting to show the application. The error is: {0}", dynamic_cast<String^>(e) );
// Exit the current thread instead of showing the windows.
ExitThread();
}
// Create both application forms and handle the Closed event
// to know when both forms are closed.
form1 = gcnew AppForm1;
form1->Closed += gcnew EventHandler( this, &MyApplicationContext::OnFormClosed );
form1->Closing += gcnew CancelEventHandler( this, &MyApplicationContext::OnFormClosing );
formCount++;
form2 = gcnew AppForm2;
form2->Closed += gcnew EventHandler( this, &MyApplicationContext::OnFormClosed );
form2->Closing += gcnew CancelEventHandler( this, &MyApplicationContext::OnFormClosing );
formCount++;
// Get the form positions based upon the user specific data.
if ( ReadFormDataFromFile() )
{
// If the data was read from the file, set the form
// positions manually.
form1->StartPosition = FormStartPosition::Manual;
form2->StartPosition = FormStartPosition::Manual;
form1->Bounds = form1Position;
form2->Bounds = form2Position;
}
// Show both forms.
form1->Show();
form2->Show();
}
void OnApplicationExit( Object^ /*sender*/, EventArgs^ /*e*/ )
{
// When the application is exiting, write the application data to the
// user file and close it.
WriteFormDataToFile();
try
{
// Ignore any errors that might occur while closing the file handle.
userData->Close();
}
catch ( Exception^ )
{
}
}
private:
private MyApplicationContext()
{
formCount = 0;
// Handle the ApplicationExit event to know
// when the application is exiting.
Application.add_ApplicationExit(new EventHandler(
this.OnApplicationExit));
try {
// Create a file that the application will store
// user specific data in.
userData = new FileStream(Application.get_UserAppDataPath()
+ "\\appdata.txt", FileMode.OpenOrCreate);
}
catch (IOException e) {
// Inform the user that an error occurred.
MessageBox.Show("An error occurred while attempting to show the "
+ " application. The error is:" + e.ToString());
// Exit the current thread instead of showing the windows.
ExitThread();
}
// Create both application forms and handle the Closed event
// to know when both forms are closed.
form1 = new AppForm1();
form1.add_Closed(new EventHandler(OnFormClosed));
form1.add_Closing(new CancelEventHandler(OnFormClosing));
formCount++;
form2 = new AppForm2();
form2.add_Closed(new EventHandler(OnFormClosed));
form2.add_Closing(new CancelEventHandler(OnFormClosing));
formCount++;
// Get the form positions based upon the user specific data.
if (ReadFormDataFromFile()) {
// If the data was read from the file, set the form
// positions manually.
form1.set_StartPosition(FormStartPosition.Manual);
form2.set_StartPosition(FormStartPosition.Manual);
form1.set_Bounds(form1Position);
form2.set_Bounds(form2Position);
}
// Show both forms.
form1.Show();
form2.Show();
} //MyApplicationContext
private void OnApplicationExit(Object sender, EventArgs e)
{
// When the application is exiting, write the application data to the
// user file and close it.
WriteFormDataToFile();
try {
// Ignore any errors that might occur while closing the file handle.
userData.Close();
}
catch (System.Exception exp) {
}
} //OnApplicationExit
Plattformen
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
Siehe auch
Referenz
Application-Klasse
Application-Member
System.Windows.Forms-Namespace
Exit