Übersicht über das Visual Basic-AnwendungsmodellOverview of the Visual Basic Application Model

Visual Basic bietet mit dem Visual Basic-Anwendungsmodell ein klar definiertes Modell zur Steuerung des Verhaltens von Windows Forms-Anwendungen.Visual Basic provides a well-defined model for controlling the behavior of Windows Forms applications: the Visual Basic Application model. Dieses Modell enthält Ereignisse, um den Start und das Herunterfahren der Anwendung zu verarbeiten sowie zum Abfangen von Ausnahmefehlern.This model includes events for handling the application's startup and shutdown, as well as events for catching unhandled exceptions. Es bietet auch Unterstützung für die Entwicklung von Einzelinstanzanwendungen.It also provides support for developing single-instance applications. Da das Anwendungsmodell zudem erweiterbar ist, können Entwickler, die mehr Kontrolle benötigen, die überschreibbaren Methoden anpassen.The application model is extensible, so developers that need more control can customize its overridable methods.

Verwendungsmöglichkeiten für das AnwendungsmodellUses for the Application Model

In der Regel führt eine Anwendung beim Starten und beim Herunterfahren Aufgaben aus.A typical application needs to perform tasks when it starts up and shuts down. Beispielsweise kann sie beim Starten einen Begrüßungsbildschirm anzeigen, Datenbankverbindungen herstellen oder einen gespeicherten Zustand laden.For example, when it starts up, the application can display a splash screen, make database connections, load a saved state, and so on. Beim Herunterfahren kann die Anwendung etwa Datenbankverbindungen schließen, den aktuellen Zustand speichern usw.When the application shuts down, it can close database connections, save the current state, and so on. Außerdem kann die Anwendung einen bestimmten Code ausführen, wenn sie unerwartet heruntergefahren wird, z. B. bei einem Ausnahmefehler.In addition, the application can execute specific code when the application shuts down unexpectedly, such as during an unhandled exception.

Mithilfe des Visual Basic-Anwendungsmodells können Sie ganz einfach eine Einzelinstanzanwendung erstellen.The Visual Basic Application model makes it easy to create a single-instance application. Eine Einzelinstanzanwendung unterscheidet sich von einer normalen Anwendung dadurch, dass jeweils nur eine Instanz der Anwendung ausgeführt werden kann.A single-instance application differs from a normal application in that only one instance of the application can be running at a time. Der Versuch, eine weitere Instanz einer Einzelinstanzanwendung zu starten, führt dazu, dass die ursprüngliche Instanz mithilfe des Ereignisses StartupNextInstance darüber informiert wird, dass ein weiterer Startversuch durchgeführt wurde.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. Die Benachrichtigung enthält die Befehlszeilenargumente der nachfolgenden Instanz.The notification includes the subsequent instance's command-line arguments. Bevor eine Initialisierung erfolgen kann, wird die nachfolgende Instanz der Anwendung geschlossen.The subsequent instance of the application is then closed before any initialization can occur.

Eine Einzelinstanzanwendung überprüft nach dem Start, ob sie die erste Instanz oder eine nachfolgende Instanz der Anwendung ist:A single-instance application starts and checks whether it is the first instance or a subsequent instance of the application:

  • Handelt es sich um die erste Instanz, wird die Anwendung wie üblich gestartet.If it is the first instance, it starts as usual.

  • Jeder nachfolgende Versuch, die Anwendung während der Ausführung der ersten Instanz zu starten, führt zu einem ganz anderen Verhalten.Each subsequent attempt to start the application, while the first instance runs, results in very different behavior. Die nachfolgende Instanz übergibt die Befehlszeilenargumente an die erste Instanz und wird dann sofort beendet.The subsequent attempt notifies the first instance about the command-line arguments, and then immediately exits. Die erste Instanz verarbeitet das Ereignis StartupNextInstance zur Bestimmung der Befehlszeilenargumente der nachfolgenden Instanz und wird weiter ausgeführt.The first instance handles the StartupNextInstance event to determine what the subsequent instance's command-line arguments were, and continues to run.

    Im folgenden Diagramm wird die Signalübergabe von der nachfolgenden Instanz an die erste Instanz dargestellt:This diagram shows how a subsequent instance signals the first instance:

    Diagramm einer Einzelinstanzanwendung

Über die Behandlung des Ereignisses StartupNextInstance können Sie steuern, wie sich die Einzelinstanzanwendung verhalten soll.By handling the StartupNextInstance event, you can control how your single-instance application behaves. Microsoft Outlook wird z. B. in der Regel als Einzelinstanzanwendung ausgeführt. Wenn Sie nun versuchen, Outlook erneut zu starten, obwohl es bereits ausgeführt wird, wechselt der Fokus auf die ursprüngliche Instanz, es wird jedoch keine weitere Instanz geöffnet.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.

Ereignisse im AnwendungsmodellEvents in the Application Model

Folgende Ereignisse können im Anwendungsmodell auftreten:The following events are found in the application model:

  • Starten der Anwendung:Application startup. Beim Startvorgang löst die Anwendung das Ereignis Startup aus.The application raises the Startup event when it starts. Bei der Behandlung dieses Ereignisses können Sie Code hinzufügen, durch den die Anwendung vor dem Laden des Hauptformulars initialisiert wird.By handling this event, you can add code that initializes the application before the main form is loaded. Über das Startup-Ereignis können Sie die Ausführung der Anwendung in dieser Phase des Startvorgangs gegebenenfalls auch abbrechen.The Startup event also provides for canceling execution of the application during that phase of the startup process, if desired.

    Sie können die Anwendung so konfigurieren, dass während der Ausführung des Startcodes ein Begrüßungsbildschirm angezeigt wird.You can configure the application to show a splash screen while the application startup code runs. Standardmäßig wird der Begrüßungsbildschirm vom Anwendungsmodell unterdrückt, wenn eines der beiden Befehlszeilenargumente /nosplash oder -nosplash verwendet wird.By default, the application model suppresses the splash screen when either the /nosplash or -nosplash command-line argument is used.

  • Einzelinstanzanwendungen:Single-instance applications. Wird eine nachfolgende Instanz einer Einzelinstanzanwendung gestartet, wird das Ereignis StartupNextInstance ausgelöst.The StartupNextInstance event is raised when a subsequent instance of a single-instance application starts. Dieses übergibt die Befehlszeilenargumente der nachfolgenden Instanz.The event passes the command-line arguments of the subsequent instance.

  • Ausnahmefehler:Unhandled exceptions. Bei einem Ausnahmefehler wird das Ereignis UnhandledException ausgelöst.If the application encounters an unhandled exception, it raises the UnhandledException event. Der Handler für dieses Ereignis kann die Ausnahme untersuchen und entscheiden, ob die Ausführung fortgesetzt werden soll.Your handler for that event can examine the exception and determine whether to continue execution.

    Unter bestimmten Umständen wird das Ereignis UnhandledException nicht ausgelöst.The UnhandledException event is not raised in some circumstances. Weitere Informationen finden Sie unter UnhandledException.For more information, see UnhandledException.

  • Änderungen der Netzwerkkonnektivität:Network-connectivity changes. Bei Änderungen der Verfügbarkeit des Computernetzwerks wird das Ereignis NetworkAvailabilityChanged ausgelöst.If the computer's network availability changes, the application raises the NetworkAvailabilityChanged event.

    Unter bestimmten Umständen wird das Ereignis NetworkAvailabilityChanged nicht ausgelöst.The NetworkAvailabilityChanged event is not raised in some circumstances. Weitere Informationen finden Sie unter NetworkAvailabilityChanged.For more information, see NetworkAvailabilityChanged.

  • Herunterfahren der Anwendung:Application shut down. Über das Ereignis Shutdown signalisiert die Anwendung, dass sie gleich heruntergefahren wird.The application provides the Shutdown event to signal when it is about to shut down. In diesem Ereignishandler können Sie festlegen, dass die erforderlichen Vorgänge (wie z. B. Schließen und Speichern) auch abgeschlossen werden.In that event handler, you can make sure that the operations your application needs to perform—closing and saving, for example—are completed. Sie können die Anwendung so konfigurieren, dass sie beim Schließen des Hauptformulars heruntergefahren wird oder erst dann, wenn alle Formulare geschlossen werden.You can configure your application to shut down when the main form closes, or to shut down only when all forms close.

VerfügbarkeitAvailability

Das Visual Basic-Anwendungsmodell ist standardmäßig für Windows Forms-Projekte verfügbar.By default, the Visual Basic Application model is available for Windows Forms projects. Wenn Sie für die Anwendung ein anderes Startobjekt konfigurieren, oder wenn Sie den Anwendungscode mit einer benutzerdefinierten Sub Main-Klasse starten, muss das Objekt bzw. die Klasse möglicherweise eine Implementierung der Klasse WindowsFormsApplicationBasebereitstellen, um das Anwendungsmodell verwenden zu können.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. Informationen zum Ändern des Startobjekts finden Sie unter Seite „Anwendung“, Projekt-Designer (Visual Basic).For information about changing the startup object, see Application Page, Project Designer (Visual Basic).

Siehe auchSee also