Routine Main in Visual Basic

Ogni applicazione Visual Basic deve contenere una routine denominata Main. Questa routine funge da punto di partenza e controllo complessivo per l'applicazione. .NET Framework chiama la procedura Main quando è stata caricata l'applicazione ed è pronta per passare il controllo. A meno che non si stia creando un'applicazione Windows Forms, è necessario scrivere la routine Main per le applicazioni eseguite autonomamente.

Main contiene il codice che viene eseguito per primo. In Main è possibile determinare quale modulo deve essere caricato per primo all'avvio del programma, verificare se una copia dell'applicazione è già in esecuzione nel sistema, stabilire un set di variabili per l'applicazione o aprire un database richiesto dall'applicazione.

Requisiti per la routine principale

Un file eseguito autonomamente (in genere con estensione .exe) deve contenere una routine Main. Una libreria, ad esempio con .dll di estensione, non viene eseguita autonomamente e non richiede una routine Main. I requisiti per i diversi tipi di progetti che è possibile creare sono i seguenti:

  • Le applicazioni console vengono eseguite autonomamente ed è necessario specificare almeno una routine Main.

  • Le applicazioni Windows Form vengono eseguite autonomamente. Tuttavia, il compilatore Visual Basic genera automaticamente una routine Main in tale applicazione e non è necessario scriverne una.

  • Le librerie di classi non richiedono una routine Main. Queste includono librerie di controlli Windows e librerie di controlli Web. Le applicazioni Web vengono distribuite come librerie di classi.

Dichiarazione della routine principale

Esistono quattro modi per dichiarare la routine Main. Può accettare o meno argomenti e può restituire o meno un valore.

Nota

Se si dichiara Main in una classe, è necessario usare la parola chiave Shared. In un modulo Main non deve necessariamente essere Shared.

  • Il modo più semplice consiste nel dichiarare una routine Sub che non accetta argomenti o restituisce un valore.

    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 può anche restituire un valore Integer, che il sistema operativo usa come codice di uscita per il programma. Altri programmi possono testare questo codice esaminando il valore ERRORLEVEL di Windows. Per restituire un codice di uscita, è necessario dichiarare Main come routine Function anziché come routine Sub.

    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 può anche accettare una matrice String come argomento. Ogni stringa nella matrice contiene uno degli argomenti della riga di comando usati per richiamare il programma. È possibile eseguire azioni diverse a seconda dei relativi valori.

    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
    
  • È possibile dichiarare Main per esaminare gli argomenti della riga di comando, ma non per restituire un codice di uscita, come indicato di seguito.

    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
    

Vedi anche