Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Evento Application.Exit

 

Data di pubblicazione: ottobre 2016

Si verifica poco prima che un'applicazione viene chiuso e non può essere annullata.

Spazio dei nomi:   System.Windows
Assembly:  PresentationFramework (in PresentationFramework.dll)

public event ExitEventHandler Exit

Un'applicazione può arrestare per uno dei seguenti motivi:

  • Il Shutdown metodo il Application viene chiamato, in modo esplicito o come determinato dal ShutdownMode proprietà.

  • L'utente termina la sessione mediante disconnessione o chiusura.

È possibile rilevare quando si verifica l'arresto dell'applicazione mediante la gestione di Exit evento ed eseguire eventuali elaborazioni aggiuntive in base alle esigenze.

È anche possibile gestire Exit per controllare o modificare il codice di uscita quando non è necessario chiamare Shutdown in modo esplicito. Il codice di uscita è esposto dalla ApplicationExitCode proprietà del ExitEventArgs argomento passato al Exit gestore dell'evento. Quando l'applicazione si arresta, il codice di uscita viene passato al sistema operativo per l'elaborazione successiva.

Se l'applicazione gestisce il SessionEnding evento e successivamente lo Annulla, Exit non viene generato e l'applicazione continua l'esecuzione in base alla modalità di arresto.

Il codice di uscita può essere impostato da un applicazione browser XAML (XBAP), anche se il valore viene ignorato.

Per XBAP, Exit viene generato nelle circostanze seguenti:

  • Un XBAP ci si sposta.

  • In Internet Explorer 7, quando la scheda che ospita il XBAP viene chiuso.

  • Quando viene chiuso il browser.

In tutti i casi, il valore di ApplicationExitCode proprietà viene ignorata.

Nell'esempio seguente viene illustrato come:

  • Gestire il Exit evento.

  • Controllare e aggiornare il ApplicationExitCode di proprietà di ExitEventArgs.

  • Scrivere una voce in un log di applicazione nell'archiviazione isolata.

  • Rendere persistente lo stato dell'applicazione di memorizzazione isolato.

<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);
                }
            }
        }
    }
}

.NET Framework
Disponibile da 3.0
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Torna all'inizio
Mostra: