Procedimiento Main en Visual Basic

Todas las aplicaciones de Visual Basic deben contener un procedimiento denominado Main. Este procedimiento actúa como punto de partida y un control general de la aplicación. El .NET Framework llama al procedimiento Main, cuando ha cargado la aplicación y está preparado para pasarle el control. A no ser que se cree una aplicación de Windows Forms, debe escribir el procedimiento Main para que las aplicaciones se ejecuten por sí mismas.

Main contiene el código que se ejecuta en primer lugar. En Main, puede determinar qué forma se va a cargar primero al iniciarse el programa, saber si ya se está ejecutando una copia de la aplicación en el sistema, establecer un conjunto de variables para la aplicación o abrir una base de datos que requiera la aplicación.

Requisitos para el procedimiento principal

Un archivo que se ejecuta por sí mismo, (normalmente con la extensión .exe), debe contener un procedimiento Main. Una biblioteca, (por ejemplo con la extensión .dll), no se ejecuta por sí misma y no necesita un procedimiento Main. A continuación, se enumeran los requisito de los diferentes tipos de proyecto que se pueden crear:

  • Las aplicaciones de consola se ejecutan por sí mimas y es necesario proporcionar al menos un procedimiento Main.

  • Las aplicaciones de Windows Forms se ejecutan por sí mismas. Sin embargo, el compilador de Visual Basic genera automáticamente un procedimiento Main en esta aplicación y no se necesita escribir uno.

  • Las bibliotecas de clases no requieren un procedimiento Main. Se incluyen aquí las bibliotecas de control de Windows y las bibliotecas de control web. Las aplicaciones web se implementan como biblioteca de clases.

Declaración del procedimiento principal

Existen cuatro formas de declarar el procedimiento Main. Puede tomar argumentos o no y puede devolver un valor o no.

Nota

Si declara Main en una clase, se debe usar la palabra clave Shared. En un módulo, Main no es necesario que sea Shared.

  • La manera más sencilla es declarar un procedimiento Sub que no toma argumentos ni devuelve un 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 también puede devolver un valor Integer, que el sistema operativo emplea como código de salida para el programa. Otros programas pueden probar este código al examinar el valor ERRORLEVEL de Windows. Para devolver un código de salida, se debe declarar Main como un procedimiento Function de un procedimiento 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 puede tomar una matriz String como argumento. Cada cadena de la matriz contiene uno de los argumentos de la línea de comandos usados para invocar el programa. Puede realizar acciones diferentes en función de los 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
    
  • Puede declarar Main para examinar los argumentos de la línea de comandos, pero no devolver un código de salida, como se indica a continuación.

    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
    

Consulte también