Main-Prozedur in Visual Basic

Aktualisiert: November 2007

Jede Visual Basic-Anwendung muss eine Prozedur mit der Bezeichnung Main enthalten. Diese Prozedur fungiert als Ausgangspunkt und Gesamtsteuerung für die Anwendung. Wenn .NET Framework die Anwendung geladen hat und die Steuerung an sie übergeben kann, wird die Main-Prozedur aufgerufen. Sofern Sie keine Windows Forms-Anwendung erstellen, müssen Sie die Main-Prozedur für Anwendungen schreiben, die eigenständig ausgeführt werden.

Main enthält den Code, der zuerst ausgeführt wird. In Main können Sie festlegen, welches Formular beim Programmstart zuerst geladen wird, feststellen, ob eine Kopie der Anwendung bereits auf dem System ausgeführt wird, eine Reihe von Variablen für die Anwendung definieren oder eine Datenbank öffnen, die für die Anwendung erforderlich ist.

Anforderungen für die Main-Prozedur

Eine Datei, die eigenständig ausgeführt wird (normalerweise mit der Erweiterung .exe), muss eine Main-Prozedur enthalten. Eine Bibliothek (z. B. mit der Erweiterung .dll) wird nicht eigenständig ausgeführt und erfordert keine Main-Prozedur. Für die unterschiedlichen Typen von Projekten, die Sie erstellen können, gelten folgende Anforderungen:

  • Konsolenanwendungen werden eigenständig ausgeführt, und Sie müssen mindestens eine Main-Prozedur angeben. .

  • Windows Forms-Anwendungen werden eigenständig ausgeführt. Jedoch generiert der Visual Basic-Compiler automatisch eine Main-Prozedur in einer solchen Anwendung, und Sie müssen sie nicht schreiben.

  • Klassenbibliotheken erfordern keine Main-Prozedur. Zu diesen zählen Windows-Steuerelementbibliotheken und Websteuerelementbibliotheken. Webanwendungen werden als Klassenbibliotheken bereitgestellt.

Deklarieren der Main-Prozedur

Es gibt vier Möglichkeiten, die Main-Prozedur zu deklarieren. Sie kann Argumente akzeptieren oder keine Argumente akzeptieren und einen Wert zurückgeben oder keinen Wert zurückgeben.

Hinweis:

Wenn Sie Main in einer Klasse deklarieren, müssen Sie das Shared-Schlüsselwort verwenden. In einem Modul muss Main dagegen nicht Shared sein.

  • Das einfachste Verfahren ist das Deklarieren einer Sub-Prozedur, die keine Argumente akzeptiert und keinen Wert zurückgibt.

    Module mainModule
        Sub Main()
            MsgBox("The Main procedure is starting the application.")
            ' Insert call to appropriate starting place in your code.
            MsgBox("The application is terminating.")
        End Sub
    End Module
    
  • Main kann auch einen Integer-Wert zurückgeben, der vom Betriebssystem als Exitcode für das Programm verwendet wird. Andere Programme können diesen Code testen, indem Sie den Windows-Wert ERRORLEVEL prüfen. Um Exitcode zurückzugeben, müssen Sie Main als eine Function-Prozedur und nicht als Sub-Prozedur deklarieren.

    Module mainModule
        Function Main() As Integer
            MsgBox("The Main procedure is starting the application.")
            Dim returnValue As Integer = 0
            ' Insert call to appropriate starting place in your code.
            ' On return, assign appropriate value to returnValue.
            ' 0 usually means successful completion.
            MsgBox("The application is terminating with error level " _
                & CStr(returnValue) & ".")
            Return returnValue
        End Function
    End Module
    
  • Main kann auch ein String-Array als Argument enthalten. Jede Zeichenfolge im Array enthält eines der Befehlszeilenargumente, die zum Aufrufen des Programms verwendet werden. In Abhängigkeit von den Werten können Sie unterschiedliche Aktionen vornehmen.

    Module mainModule
        Function Main(ByVal cmdArgs() As String) As Integer
            MsgBox("The Main procedure is starting the application.")
            Dim returnValue As Integer = 0
            ' See if there are any arguments.
            If cmdArgs.Length > 0 Then
                For argNum As Integer = 0 To UBound(cmdArgs, 1)
                    ' Insert code to examine cmdArgs(argNum) and take
                    ' appropriate action based on its value.
                Next argNum
            End If
            ' Insert call to appropriate starting place in your code.
            ' On return, assign appropriate value to returnValue.
            ' 0 usually means successful completion.
            MsgBox("The application is terminating with error level " _
                & CStr(returnValue) & ".")
            Return returnValue
        End Function
    End Module
    
  • Sie können Main deklarieren, um Befehlszeilenargumente zu überprüfen, ohne Exitcode zurückzugeben (siehe folgendes Beispiel).

    Module mainModule
        Sub Main(ByVal cmdArgs() As String)
            MsgBox("The Main procedure is starting the application.")
            Dim returnValue As Integer = 0
            ' See if there are any arguments.
            If cmdArgs.Length > 0 Then
                For argNum As Integer = 0 To UBound(cmdArgs, 1)
                    ' Insert code to examine cmdArgs(argNum) and take
                    ' appropriate action based on its value.
                Next argNum
            End If
            ' Insert call to appropriate starting place in your code.
            MsgBox("The application is terminating."
        End Sub
    End Module
    

Siehe auch

Konzepte

Visual Basic-Version von Hello World!

Referenz

Struktur von Visual Basic-Programmen

/main

Shared (Visual Basic)

MsgBox-Funktion (Visual Basic)

Sub-Anweisung (Visual Basic)

Function-Anweisung (Visual Basic)

Integer-Datentyp (Visual Basic)

String-Datentyp (Visual Basic)

Length

UBound-Funktion (Visual Basic)