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 valoreInteger
, 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 dichiarareMain
come routineFunction
anziché come routineSub
.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 matriceString
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