Cenni preliminari sul modello di applicazione Visual Basic

Visual Basic fornisce un modello ben definito per controllare il comportamento delle applicazioni Windows Forms: il modello applicativo Visual Basic. Questo modello include eventi per la gestione dell'avvio e dell'arresto dell'applicazione, nonché eventi per rilevare eccezioni non gestite. Fornisce anche il supporto per lo sviluppo di applicazioni a istanza singola. Il modello applicativo è estendibile, quindi gli sviluppatori che necessitano di un maggiore controllo possono personalizzare i metodi sostituibili.

Usi per il modello applicativo

Un'applicazione tipica deve eseguire attività all'avvio e all'arresto. Ad esempio, all'avvio, l'applicazione può visualizzare una schermata iniziale, stabilire connessioni di database, caricare uno stato salvato e così via. Quando l'applicazione viene arrestata, può chiudere le connessioni di database, salvare lo stato corrente e così via. Inoltre, l'applicazione può eseguire codice specifico quando viene arrestata in modo imprevisto, ad esempio durante un'eccezione non gestita.

Il modello di applicazione Visual Basic semplifica la creazione di un'applicazione a istanza singola. Un'applicazione a istanza singola è diversa da un'applicazione normale in quanto una sola istanza dell'applicazione può essere eseguita alla volta. Un tentativo di avviare un'altra istanza di un'applicazione a istanza singola comporta la notifica dell'istanza originale, tramite l'evento StartupNextInstance, che indica che è stato effettuato un altro tentativo di avvio. La notifica include gli argomenti della riga di comando dell'istanza successiva. L'istanza successiva dell'applicazione viene quindi chiusa prima di poter eseguire qualsiasi inizializzazione.

Un'applicazione a istanza singola viene avviata e verifica se si tratta della prima istanza o di un'istanza successiva dell'applicazione:

  • Se è la prima istanza, inizia come di consueto.

  • Ogni tentativo successivo di avviare l'applicazione mentre la prima istanza viene eseguita causa un comportamento molto diverso. Il tentativo successivo invia una notifica alla prima istanza degli argomenti della riga di comando e quindi termina immediatamente. La prima istanza gestisce l'evento StartupNextInstance per determinare quali argomenti della riga di comando dell'istanza successiva sono e continuano a essere eseguiti.

    Questo diagramma mostra come un'istanza successiva segnali la prima istanza:

    Diagram that shows a single instance application image.

Gestendo l'evento StartupNextInstance, è possibile controllare il comportamento dell'applicazione a istanza singola. Ad esempio, Microsoft Outlook viene in genere eseguito come applicazione a istanza singola; quando Outlook è in esecuzione e si tenta di riavviarlo, lo stato attivo passa all'istanza originale, ma non viene aperta un'altra istanza.

Eventi nel modello applicativo

Nel modello di applicazione sono disponibili gli eventi seguenti:

  • Avvio dell'applicazione L'applicazione genera l'evento Startup all'avvio. Gestendo questo evento, è possibile aggiungere codice che inizializza l'applicazione prima del caricamento del modulo principale. L'evento Startup fornisce anche l'annullamento dell'esecuzione dell'applicazione durante tale fase del processo di avvio, se necessario.

    È possibile configurare l'applicazione per visualizzare una schermata iniziale durante l'esecuzione del codice di avvio dell'applicazione. Per impostazione predefinita, il modello di applicazione elimina la schermata iniziale quando viene usato l'argomento della riga di comando /nosplash o -nosplash.

  • Applicazioni a istanza singola. L'evento StartupNextInstance viene generato all'avvio di un'istanza successiva di un'applicazione a istanza singola. L'evento passa gli argomenti della riga di comando dell'istanza successiva.

  • Eccezioni non gestite. Se l'applicazione rileva un'eccezione non gestita, genera l'evento UnhandledException. Il gestore per tale evento può esaminare l'eccezione e determinare se continuare l'esecuzione.

    L'evento UnhandledException non viene generato in alcune circostanze. Per ulteriori informazioni, vedere UnhandledException.

  • Modifiche alla connettività di rete. Se la disponibilità di rete del computer cambia, l'applicazione genera l'evento NetworkAvailabilityChanged.

    L'evento NetworkAvailabilityChanged non viene generato in alcune circostanze. Per ulteriori informazioni, vedere NetworkAvailabilityChanged.

  • Applicazione arrestata. L'applicazione fornisce l'evento Shutdown per segnalare quando sta per essere arrestata. In tale gestore dell'evento è possibile assicurarsi che le operazioni che l'applicazione deve eseguire, ad esempio chiusura e salvataggio, vengano completate. È possibile configurare l'applicazione per l'arresto alla chiusura del modulo principale o per l'arresto solo quando tutti i moduli vengono chiusi.

Disponibilità

Per impostazione predefinita, il modello di applicazione Visual Basic è disponibile per i progetti Windows Forms. Se si configura l'applicazione in modo da usare un oggetto di avvio diverso o se si avvia il codice dell'applicazione con un oggetto personalizzato Sub Main, tale oggetto o classe potrebbe dover fornire un'implementazione della classe WindowsFormsApplicationBase per usare il modello di applicazione. Per informazioni sulla modifica dell'oggetto di avvio, vedere Pagina applicazione, Creazione progetti (Visual Basic).

Vedi anche