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 einenInteger
-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 SieMain
alsFunction
-Prozedur anstelle einerSub
-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 einString
-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