Процедура Main в Visual Basic
Каждое приложение Visual Basic должно содержать процедуру с именем Main
. Эта процедура служит отправной точкой и общим элементом управления для приложения. Платформа .NET Framework вызывает Main
процедуру при загрузке приложения и готова передать в нее управление. Если вы не создаете приложение Windows Forms, необходимо написать процедуру Main
для приложений, которые выполняются самостоятельно.
Main
содержит код, который выполняется сначала. В Main
этом случае можно определить, какая форма должна быть загружена сначала при запуске программы, выяснить, уже ли в системе запущена копия приложения, установить набор переменных для приложения или открыть базу данных, требуемую приложением.
Требования к основной процедуре
Файл, который выполняется самостоятельно (обычно с расширением .exe), должен содержать процедуру Main
. Библиотека (например, с расширением .dll) не выполняется самостоятельно и не требует Main
процедуры. Требования к различным типам проектов, которые можно создать, приведены ниже.
Консольные приложения выполняются самостоятельно, и необходимо предоставить по крайней мере одну
Main
процедуру.Приложения Windows Forms выполняются самостоятельно. Однако компилятор Visual Basic автоматически создает процедуру
Main
в таком приложении, и ее не нужно писать.Библиотеки классов не требуют
Main
процедуры. К ним относятся библиотеки элементов управления Windows и библиотеки веб-элементов управления. Веб-приложения развертываются как библиотеки классов.
Объявление основной процедуры
Существует четыре способа объявления Main
процедуры. Он может принимать аргументы или нет, и он может возвращать значение или нет.
Примечание.
Если вы объявляете Main
в классе, необходимо использовать Shared
ключевое слово. В модуле Main
не требуется Shared
.
Самый простой способ — объявить процедуру
Sub
, которая не принимает аргументы или возвращает значение.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
также может возвращать значение, которое операционнаяInteger
система использует в качестве кода выхода для программы. Другие программы могут протестировать этот код, проверив значение Windows ERRORLEVEL. Чтобы вернуть код выхода, необходимо объявитьMain
какFunction
процедуру вместо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
также может приниматьString
массив в качестве аргумента. Каждая строка в массиве содержит один из аргументов командной строки, используемых для вызова программы. Вы можете выполнять различные действия в зависимости от их значений.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
Вы можете объявить
Main
, чтобы проверить аргументы командной строки, но не возвращать код выхода, как показано ниже.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