Huvudprocedur i Visual Basic

Varje Visual Basic-program måste innehålla en procedur med namnet Main. Den här proceduren fungerar som startpunkt och övergripande kontroll för ditt program. .NET Framework anropar din Main procedur när programmet har lästs in och är redo att skicka kontroll till det. Om du inte skapar ett Windows Forms-program måste du skriva proceduren Main för program som körs på egen hand.

Main innehåller koden som körs först. I Mainkan du avgöra vilket formulär som ska läsas in först när programmet startar, ta reda på om en kopia av programmet redan körs i systemet, upprätta en uppsättning variabler för ditt program eller öppna en databas som programmet kräver.

Krav för huvudproceduren

En fil som körs på egen hand (vanligtvis med tillägget .exe) måste innehålla en Main procedur. Ett bibliotek (till exempel med tillägg .dll) körs inte på egen hand och kräver Main ingen procedur. Kraven för de olika typer av projekt som du kan skapa är följande:

  • Konsolprogram körs på egen hand och du måste ange minst en Main procedur.

  • Windows Forms-program körs på egen hand. Visual Basic-kompilatorn genererar dock automatiskt en Main procedur i ett sådant program och du behöver inte skriva någon.

  • Klassbibliotek kräver Main ingen procedur. Dessa inkluderar Windows-kontrollbibliotek och webbkontrollbibliotek. Webbprogram distribueras som klassbibliotek.

Deklarera huvudproceduren

Det finns fyra sätt att deklarera proceduren Main . Det kan ta argument eller inte, och det kan returnera ett värde eller inte.

Kommentar

Om du deklarerar Main i en klass måste du använda nyckelordet Shared . I en modul Main behöver inte vara Shared.

  • Det enklaste sättet är att deklarera en Sub procedur som inte tar argument eller returnerar ett värde.

    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 kan också returnera ett Integer värde som operativsystemet använder som slutkod för ditt program. Andra program kan testa den här koden genom att undersöka Windows ERRORLEVEL-värdet. Om du vill returnera en slutkod måste du deklarera Main som en Function procedur i stället för en Sub procedur.

    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 kan också ta en String matris som ett argument. Varje sträng i matrisen innehåller ett av de kommandoradsargument som används för att anropa programmet. Du kan vidta olika åtgärder beroende på deras värden.

    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
    
  • Du kan deklarera Main för att undersöka kommandoradsargumenten men inte returnera en slutkod enligt följande.

    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
    

Se även