Cenni preliminari sul modello di applicazione Visual BasicOverview of the Visual Basic Application Model

Visual Basic fornisce un modello ben definito per controllare il comportamento delle applicazioni Windows Forms: il modello di applicazione Visual Basic.Visual Basic provides a well-defined model for controlling the behavior of Windows Forms applications: the Visual Basic Application model. Questo modello include gli eventi per gestire l'avvio e l'arresto dell'applicazione, nonché gli eventi per intercettare le eccezioni non gestite.This model includes events for handling the application's startup and shutdown, as well as events for catching unhandled exceptions. Fornisce inoltre il supporto per lo sviluppo di applicazioni a istanza singola.It also provides support for developing single-instance applications. Il modello applicativo è estendibile, quindi gli sviluppatori che necessitano di un maggior controllo possono personalizzare i metodi sottoponibili a override.The application model is extensible, so developers that need more control can customize its overridable methods.

Usi per il modello di applicazioneUses for the Application Model

Un'applicazione tipica deve eseguire attività quando viene avviata e arrestata.A typical application needs to perform tasks when it starts up and shuts down. Ad esempio, all'avvio, l'applicazione può visualizzare una schermata iniziale, stabilire connessioni al database, caricare uno stato salvato e così via.For example, when it starts up, the application can display a splash screen, make database connections, load a saved state, and so on. Quando l'applicazione viene arrestata, è possibile chiudere le connessioni di database, salvare lo stato corrente e così via.When the application shuts down, it can close database connections, save the current state, and so on. Inoltre, l'applicazione può eseguire codice specifico quando l'applicazione si arresta in modo imprevisto, ad esempio durante un'eccezione non gestita.In addition, the application can execute specific code when the application shuts down unexpectedly, such as during an unhandled exception.

Il modello di applicazione Visual Basic semplifica la creazione di un'applicazione a istanza singola .The Visual Basic Application model makes it easy to create a single-instance application. Un'applicazione a istanza singola è diversa da un'applicazione normale, in quanto è possibile eseguire una sola istanza dell'applicazione alla volta.A single-instance application differs from a normal application in that only one instance of the application can be running at a time. Il tentativo di avviare un'altra istanza di un'applicazione a istanza singola comporta la notifica dell'istanza originale, tramite l'evento StartupNextInstance, che è stato effettuato un altro tentativo di avvio.An attempt to launch another instance of a single-instance application results in the original instance being notified—by means of the StartupNextInstance event—that another launch attempt was made. La notifica include gli argomenti della riga di comando dell'istanza successiva.The notification includes the subsequent instance's command-line arguments. L'istanza successiva dell'applicazione viene quindi chiusa prima che possa verificarsi un'inizializzazione.The subsequent instance of the application is then closed before any initialization can occur.

Viene avviata un'applicazione a istanza singola e viene verificato se si tratta della prima istanza o di un'istanza successiva dell'applicazione:A single-instance application starts and checks whether it is the first instance or a subsequent instance of the application:

  • Se è la prima istanza, viene avviata come di consueto.If it is the first instance, it starts as usual.

  • Ogni tentativo successivo di avviare l'applicazione, mentre viene eseguita la prima istanza, comporta un comportamento molto diverso.Each subsequent attempt to start the application, while the first instance runs, results in very different behavior. Il tentativo successivo invia una notifica alla prima istanza sugli argomenti della riga di comando e quindi si chiude immediatamente.The subsequent attempt notifies the first instance about the command-line arguments, and then immediately exits. La prima istanza gestisce l'evento StartupNextInstance per determinare quali sono gli argomenti della riga di comando dell'istanza successiva e continuano a essere eseguiti.The first instance handles the StartupNextInstance event to determine what the subsequent instance's command-line arguments were, and continues to run.

    Questo diagramma mostra il modo in cui un'istanza successiva segnala la prima istanza:This diagram shows how a subsequent instance signals the first instance:

    Diagramma che mostra un'immagine dell'applicazione a istanza singola.

Gestendo l'evento StartupNextInstance, è possibile controllare il comportamento dell'applicazione a istanza singola.By handling the StartupNextInstance event, you can control how your single-instance application behaves. Microsoft Outlook, ad esempio, viene in genere eseguito come applicazione a istanza singola. Quando Outlook è in esecuzione e si tenta di riavviare Outlook, lo stato attivo passa all'istanza originale, ma non viene aperta un'altra istanza.For example, Microsoft Outlook typically runs as a single-instance application; when Outlook is running and you attempt to start Outlook again, focus shifts to the original instance but another instance does not open.

Eventi nel modello applicativoEvents in the Application Model

Nel modello di applicazione sono disponibili gli eventi seguenti:The following events are found in the application model:

  • Avvio dell'applicazione.Application startup. L'applicazione genera l'evento Startup all'avvio.The application raises the Startup event when it starts. Gestendo questo evento, è possibile aggiungere il codice che Inizializza l'applicazione prima che venga caricato il form principale.By handling this event, you can add code that initializes the application before the main form is loaded. L'evento Startup fornisce anche l'annullamento dell'esecuzione dell'applicazione durante la fase del processo di avvio, se necessario.The Startup event also provides for canceling execution of the application during that phase of the startup process, if desired.

    È possibile configurare l'applicazione in modo da visualizzare una schermata iniziale mentre viene eseguito il codice di avvio dell'applicazione.You can configure the application to show a splash screen while the application startup code runs. Per impostazione predefinita, il modello di applicazione elimina la schermata iniziale quando viene usato l'argomento della riga di comando /nosplash o -nosplash.By default, the application model suppresses the splash screen when either the /nosplash or -nosplash command-line argument is used.

  • Applicazioni a istanza singola.Single-instance applications. L'evento StartupNextInstance viene generato quando viene avviata un'istanza successiva di un'applicazione a istanza singola.The StartupNextInstance event is raised when a subsequent instance of a single-instance application starts. L'evento passa gli argomenti della riga di comando dell'istanza successiva.The event passes the command-line arguments of the subsequent instance.

  • Eccezioni non gestite.Unhandled exceptions. Se l'applicazione rileva un'eccezione non gestita, genera l'evento UnhandledException.If the application encounters an unhandled exception, it raises the UnhandledException event. Il gestore per l'evento può esaminare l'eccezione e determinare se continuare l'esecuzione.Your handler for that event can examine the exception and determine whether to continue execution.

    In alcune circostanze, l'evento UnhandledException non viene generato.The UnhandledException event is not raised in some circumstances. Per ulteriori informazioni, vedere UnhandledException.For more information, see UnhandledException.

  • Modifiche della connettività di rete.Network-connectivity changes. Se la disponibilità di rete del computer viene modificata, l'applicazione genera l'evento NetworkAvailabilityChanged.If the computer's network availability changes, the application raises the NetworkAvailabilityChanged event.

    In alcune circostanze, l'evento NetworkAvailabilityChanged non viene generato.The NetworkAvailabilityChanged event is not raised in some circumstances. Per ulteriori informazioni, vedere NetworkAvailabilityChanged.For more information, see NetworkAvailabilityChanged.

  • L'applicazione è stata arrestata.Application shut down. L'applicazione fornisce l'evento Shutdown per segnalare quando sta per essere arrestato.The application provides the Shutdown event to signal when it is about to shut down. In tale gestore eventi, è possibile verificare che le operazioni che l'applicazione deve eseguire, ad esempio la chiusura e il salvataggio, siano completate.In that event handler, you can make sure that the operations your application needs to perform—closing and saving, for example—are completed. È possibile configurare l'applicazione in modo che venga arrestata quando il form principale viene chiuso o per arrestarsi solo quando tutti i form si chiudono.You can configure your application to shut down when the main form closes, or to shut down only when all forms close.

DisponibilitàAvailability

Per impostazione predefinita, il modello di applicazione Visual Basic è disponibile per i progetti Windows Forms.By default, the Visual Basic Application model is available for Windows Forms projects. Se si configura l'applicazione in modo che usi un oggetto di avvio diverso o si avvia il codice dell'applicazione con un Sub Mainpersonalizzato, tale oggetto o classe potrebbe dover fornire un'implementazione della classe WindowsFormsApplicationBase per usare il modello di applicazione.If you configure the application to use a different startup object, or start the application code with a custom Sub Main, then that object or class may need to provide an implementation of the WindowsFormsApplicationBase class to use the application model. Per informazioni sulla modifica dell'oggetto di avvio, vedere pagina applicazione, Progettazione progetti (Visual Basic).For information about changing the startup object, see Application Page, Project Designer (Visual Basic).

Vedere ancheSee also