Main-Prozedur in Visual Basic

Jede Visual Basic-Anwendung muss eine Prozedur mit dem Namen Main enthalten. Diese Prozedur fungiert als Ausgangspunkt und Gesamtsteuerung für die Anwendung. .NET Framework ruft Ihre Main-Prozedur auf, nachdem Ihre Anwendung geladen wurde und dafür bereit ist, die Steuerung an sie zu übergeben. 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 bestimmen, welches Formular zuerst geladen werden soll, wenn das Programm gestartet wird, ermitteln, ob eine Kopie Ihrer Anwendung bereits auf dem System ausgeführt wird, eine Reihe von Variablen für Ihre Anwendung einrichten oder eine Datenbank öffnen, die die Anwendung benötigt.

Anforderungen für die Main-Prozedur

Eine Datei, die eigenständig ausgeführt wird (in der Regel 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. Die Anforderungen für die verschiedenen Arten von Projekten, die Sie erstellen können, sind wie folgt:

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

  • Windows Forms-Anwendungen werden eigenständig ausgeführt. Der Visual Basic-Compiler generiert jedoch automatisch eine Main-Prozedur in einer solchen Anwendung, und Sie müssen diese Prozedur nicht erstellen.

  • Klassenbibliotheken erfordern keine Main-Prozedur. Dazu gehören Windows-Steuerungsbibliotheken und Websteuerungsbibliotheken. Webanwendungen werden als Klassenbibliotheken bereitgestellt.

Deklarieren der Main-Prozedur

Es gibt vier Möglichkeiten, die Main-Prozedur zu deklarieren. Sie kann Argumente annehmen oder auch nicht, und sie kann einen Wert zurückgeben oder auch nicht.

Hinweis

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

  • Die einfachste Möglichkeit besteht darin, eine Sub-Prozedur zu deklarieren, die keine Argumente annimmt 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, den das Betriebssystem als Exitcode für Ihr Programm verwendet. Andere Programme können diesen Code testen, indem sie den Windows-ERRORLEVEL-Wert untersuchen. Um einen Exitcode zurückzugeben, müssen Sie Main als Function-Prozedur anstelle einer 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 annehmen. Jede Zeichenfolge im Array enthält eines der Befehlszeilenargumente, die zum Aufrufen des Programms verwendet werden. Abhängig von deren Werten können Sie verschiedene Aktionen ausführen.

    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
            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 die Befehlszeilenargumente zu untersuchen, aber keinen Exitcode wie folgt zurückzugeben.

    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
            End If
            ' Insert call to appropriate starting place in your code.
            MsgBox("The application is terminating.")
        End Sub
    End Module
    

Weitere Informationen