Compartilhar via


Procedimento principal no Visual Basic

Todo aplicativo do Visual Basic deve conter um procedimento chamado Main. Este procedimento serve como ponto de partida e controle geral para seu aplicativo. O .NET Framework chama o procedimento Main quando ele carrega seu aplicativo e está pronto para passar o controle para ele. A menos que você esteja criando um aplicativo do Windows Forms, você deve escrever o procedimento Main para aplicativos executados por conta própria.

Main contém o código que é executado primeiro. Em Main, você pode determinar qual formulário deve ser carregado primeiro quando o programa for iniciado, descobrir se uma cópia do aplicativo já está em execução no sistema, estabelecer um conjunto de variáveis para o seu aplicativo ou abrir um banco de dados que o aplicativo exige.

Requisitos para o procedimento principal

Um arquivo que é executado por conta própria (geralmente com a extensão .exe) deve conter um procedimento Main. Uma biblioteca (por exemplo, com extensão .dll) não é executada por conta própria e não requer um procedimento Main. Os requisitos para os diferentes tipos de projetos que você pode criar são os seguintes:

  • Os aplicativos de console são executados por conta própria, e você deve fornecer pelo menos um procedimento Main.

  • Os aplicativos do Windows Forms são executados por conta própria. No entanto, o compilador do Visual Basic gera automaticamente um procedimento Main em um aplicativo como esses, e você não precisa escrever um.

  • Bibliotecas de classes não exigem um procedimento Main. Elas incluem bibliotecas de controle do Windows e bibliotecas de controle da Web. Aplicativos Web são implantados como bibliotecas de classes.

Declarar o procedimento principal

Há quatro maneiras de declarar o procedimento Main. Ele pode usar argumentos ou não, e pode retornar um valor ou não.

Observação

Se você declarar Main em uma classe, deverá usar a palavra-chave Shared. Em um módulo, Main não precisa ser Shared.

  • A maneira mais simples é declarar um procedimento Sub que não aceita argumentos ou retorna um valor.

    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 também pode retornar um valor Integer, que o sistema operacional usa como o código de saída do programa. Outros programas podem testar esse código examinando o valor ERRORLEVEL do Windows. Para retornar um código de saída, você deve declarar Main como um procedimento Function em vez de um procedimento 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 também pode tomar uma matriz String como um argumento. Cada cadeia de caracteres na matriz contém um dos argumentos de linha de comando usados para invocar seu programa. Você pode executar ações diferentes dependendo de seus valores.

    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
    
  • Você pode declarar Main para examinar os argumentos de linha de comando, mas não retornar um código de saída, da seguinte maneira.

    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
    

Confira também