Procedimiento Main en Visual Basic

Actualización: noviembre 2007

Todas las aplicaciones de Visual Basic deben contener un procedimiento denominado Main. Este procedimiento sirve como punto de partida y control general de la aplicación. .NET Framework llama al procedimiento Main cuando ha cargado la aplicación y está listo para pasarle el control. A menos que vaya a crear una aplicación de Windows Forms, debe escribir el procedimiento Main para las aplicaciones que se ejecutan por sí solas.

Main contiene el código que se ejecuta primero. En Main, se puede especificar qué formulario se cargará primero al iniciar el programa, se puede saber si 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 la aplicación requiera.

Requisitos para el procedimiento Main

Un archivo que se ejecuta por sí solo (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í sola y no requiere un procedimiento Main. Los requisitos para los diferentes tipos de proyectos que se pueden crear son los siguientes:

  • Aplicaciones de consola que se ejecutan por sí solas; se debe proporcionar al menos un procedimiento Main. .

  • Aplicaciones de formularios Windows Forms que se ejecutan por sí solas. Sin embargo, el compilador de Visual Basic genera automáticamente un procedimiento Main en este tipo de aplicación y no es necesario escribir uno.

  • Las bibliotecas de clases no requieren un procedimiento Main. Entre ellas se incluyen las bibliotecas de controles de Windows y las bibliotecas de controles Web. Las aplicaciones Web se implementan como bibliotecas de clases.

Declarar el procedimiento Main

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

Nota:

Si se declara Main en una clase, hay que utilizar la palabra clave Shared. En un módulo, Main no necesita ser Shared.

  • La manera más simple es declarar un procedimiento Sub que no toma los 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 utiliza como código de salida del programa. Otros programas pueden comprobar este código examinando el valor de ERRORLEVEL de Windows. Para devolver un código de salida, se debe declarar Main como un procedimiento Function, no como 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 también puede tomar como argumento una matriz de tipo String. Cada cadena de la matriz contiene uno de los argumentos de línea de comandos que se utiliza para invocar el programa. Puede tomar acciones distintas en función de sus 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 argNum
            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
    
  • Se puede declarar Main para examinar los argumentos de línea de comandos pero no devolver un código de salida, de la manera siguiente.

    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 argNum
            End If
            ' Insert call to appropriate starting place in your code.
            MsgBox("The application is terminating."
        End Sub
    End Module
    

Vea también

Conceptos

Versión de Visual Basic del programa Hola a todos

Referencia

Estructura de un programa de Visual Basic

/main

Shared (Visual Basic)

MsgBox (Función, Visual Basic)

Instrucción Sub (Visual Basic)

Instrucción Function (Visual Basic)

Integer (Tipo de datos, Visual Basic)

String (Tipo de datos, Visual Basic)

Length

UBound (Función, Visual Basic)