Leer en inglés

Compartir a través de


Application.ApplicationExit Evento

Definición

Se produce cuando la aplicación se va a cerrar.

C#
public static event EventHandler ApplicationExit;
C#
public static event EventHandler? ApplicationExit;

Tipo de evento

Ejemplos

En el ejemplo de código siguiente se muestran dos formularios y sale de la aplicación cuando se cierran ambos formularios. Cuando se inicia y sale la aplicación, se recuerda la posición de cada formulario. En este ejemplo se muestra cómo usar el ApplicationExit evento para saber cuándo se deben conservar las posiciones del formulario en el archivo y cuándo FileStream se debe cerrar.

La clase MyApplicationContext hereda de ApplicationContext y realiza un seguimiento de cuándo se cierra cada formulario y sale del subproceso actual cuando ambos están. La clase recuerda la posición de cada formulario cuando se cierra. Cuando se produce el ApplicationExit evento, la clase escribe las posiciones de cada una para el usuario en el archivo. Los datos de posición del formulario se almacenan en un archivo titulado appdata.txt que se crea en la ubicación determinada por UserAppDataPath. El Main método llama Application.Run(context) a para iniciar la aplicación según .ApplicationContext

Este código es un extracto del ejemplo que se muestra en la información general de la ApplicationContext clase. Consulte ApplicationContext para obtener toda la lista de código.

C#
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 { }
}

Comentarios

Debe adjuntar los controladores de eventos al ApplicationExit evento para realizar tareas necesarias no controladas antes de que la aplicación deje de ejecutarse. Puede cerrar los archivos abiertos por esta aplicación o eliminar objetos que la recolección de elementos no utilizados no recuperó.

Dado que se trata de un evento estático, debe desasociar los controladores de eventos adjuntos a este evento en el ApplicationExit propio controlador de eventos. Si no desasocia estos controladores, permanecerán adjuntos al evento y seguirán consumiendo memoria.

Se aplica a

Producto Versiones
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10

Consulte también