Condividi tramite


Procedura principale in Visual Basic

Ogni applicazione Visual Basic deve contenere una routine denominata Main. Questa procedura funge da punto di partenza e controllo complessivo per l'applicazione. Il .NET Framework chiama la procedura Main quando ha caricato l'applicazione ed è pronto a passarle il controllo. A meno che non si stia creando un'applicazione Windows Form, è necessario scrivere la Main procedura 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 procedura principale

Un file eseguito autonomamente (in genere con estensione .exe) deve contenere una Main routine. Una libreria ,ad esempio con estensione .dll) non viene eseguita autonomamente e non richiede una Main routine. 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 Main procedura.

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

  • Le librerie di classi non richiedono la Main procedura. Tra cui librerie di controlli Windows e librerie di controlli Web. Le applicazioni Web vengono distribuite come librerie di classi.

Dichiarazione della procedura principale

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

Annotazioni

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

  • Il modo più semplice consiste nel dichiarare una Sub routine 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 Integer valore, 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 una Function routine anziché una Sub routine.

    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 String matrice 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 di esaminare gli argomenti della riga di comando, ma non 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
    

Vedere anche