Información general sobre el modelo de aplicaciones de Visual BasicOverview of the Visual Basic Application Model

Visual Basic proporciona un modelo bien definido para controlar el comportamiento de las aplicaciones de Windows Forms: el modelo de aplicación de Visual Basic.Visual Basic provides a well-defined model for controlling the behavior of Windows Forms applications: the Visual Basic Application model. Este modelo incluye eventos para controlar el inicio y el cierre de la aplicación, así como eventos para detectar excepciones no controladas.This model includes events for handling the application's startup and shutdown, as well as events for catching unhandled exceptions. También proporciona compatibilidad para desarrollar aplicaciones de instancia única.It also provides support for developing single-instance applications. El modelo de aplicación es ampliable, por lo que los desarrolladores que necesiten un mayor control pueden personalizar sus métodos reemplazables.The application model is extensible, so developers that need more control can customize its overridable methods.

Usos del modelo de aplicaciónUses for the Application Model

Una aplicación al uso necesita realizar tareas al iniciarse y al cerrarse.A typical application needs to perform tasks when it starts up and shuts down. Por ejemplo, cuando se inicia, la aplicación puede mostrar una pantalla de presentación, establecer conexiones con bases de datos, cargar un estado guardado, etc.For example, when it starts up, the application can display a splash screen, make database connections, load a saved state, and so on. Y, cuando se cierra, puede finalizar esas conexiones de base de datos, guardar el estado actual, etc.When the application shuts down, it can close database connections, save the current state, and so on. Además, la aplicación puede ejecutar código específico si se cierra de forma inesperada, como durante una excepción no controlada.In addition, the application can execute specific code when the application shuts down unexpectedly, such as during an unhandled exception.

El modelo de aplicación de Visual Basic permite crear una aplicación de instancia única fácilmente.The Visual Basic Application model makes it easy to create a single-instance application. Una aplicación de instancia única se distingue de una aplicación normal en que solo se puede ejecutar una instancia de la aplicación a la vez.A single-instance application differs from a normal application in that only one instance of the application can be running at a time. Cualquier intento de iniciar otra instancia de una aplicación de instancia única dará como resultado el envío de una notificación a la instancia original (por medio del evento StartupNextInstance) para indicar que ha habido otro intento de inicio.An attempt to launch another instance of a single-instance application results in the original instance being notified—by means of the StartupNextInstance event—that another launch attempt was made. Esta notificación incluye los argumentos de línea de comandos de la esa instancia posterior.The notification includes the subsequent instance's command-line arguments. Tras ello, la instancia posterior de la aplicación se cierra antes de que se pueda inicializarse.The subsequent instance of the application is then closed before any initialization can occur.

Una aplicación de instancia única se inicia y comprueba si se trata de la primera instancia o de una instancia posterior de la aplicación:A single-instance application starts and checks whether it is the first instance or a subsequent instance of the application:

  • Si es la primera instancia, se inicia como de costumbre.If it is the first instance, it starts as usual.

  • Mientras esta primera instancia se está ejecutando, cualquier intento posterior de iniciar la aplicación da como resultado un comportamiento muy diferente.Each subsequent attempt to start the application, while the first instance runs, results in very different behavior. El siguiente intento notifica a la primera instancia sobre los argumentos de la línea de comandos y, seguidamente, finaliza.The subsequent attempt notifies the first instance about the command-line arguments, and then immediately exits. La primera instancia controla el evento StartupNextInstance para determinar cuáles eran los argumentos de la línea de comandos de la instancia posterior, y sigue ejecutándose.The first instance handles the StartupNextInstance event to determine what the subsequent instance's command-line arguments were, and continues to run.

    En este diagrama se muestra cómo una instancia posterior señala a la primera instancia:This diagram shows how a subsequent instance signals the first instance:

    Diagrama que muestra una imagen de una aplicación de instancia única.

Al controlar el evento StartupNextInstance, se puede controlar el comportamiento de la aplicación de instancia única.By handling the StartupNextInstance event, you can control how your single-instance application behaves. Por ejemplo, Microsoft Outlook suele ejecutarse como una aplicación de instancia única. Si Outlook se está ejecutando y se intenta volver a iniciar, el foco se desplaza a la instancia original, pero no se abre otra instancia.For example, Microsoft Outlook typically runs as a single-instance application; when Outlook is running and you attempt to start Outlook again, focus shifts to the original instance but another instance does not open.

Eventos en el modelo de aplicaciónEvents in the Application Model

En el modelo de aplicación podemos encontrar los siguientes eventos:The following events are found in the application model:

  • Inicio de la aplicación.Application startup. La aplicación genera el evento Startup cuando se inicia.The application raises the Startup event when it starts. Al controlar este evento, se puede agregar código que inicialice la aplicación antes de que el formulario principal se cargue.By handling this event, you can add code that initializes the application before the main form is loaded. El evento Startup también permite cancelar la ejecución de la aplicación durante esa fase del proceso de inicio, si se quiere.The Startup event also provides for canceling execution of the application during that phase of the startup process, if desired.

    La aplicación se puede configurar para mostrar una pantalla de presentación mientras se ejecuta el código de inicio de la aplicación.You can configure the application to show a splash screen while the application startup code runs. El modelo de aplicación suprime de forma predeterminada la pantalla de presentación si se usa el argumento de línea de comandos /nosplash o -nosplash.By default, the application model suppresses the splash screen when either the /nosplash or -nosplash command-line argument is used.

  • Aplicaciones de instancia única.Single-instance applications. El evento StartupNextInstance se genera cuando se inicia una instancia posterior de una aplicación de instancia única.The StartupNextInstance event is raised when a subsequent instance of a single-instance application starts. El evento pasa los argumentos de la línea de comandos de esa instancia posterior.The event passes the command-line arguments of the subsequent instance.

  • Excepciones no controladas.Unhandled exceptions. Si la aplicación detecta una excepción no controlada, genera el evento UnhandledException.If the application encounters an unhandled exception, it raises the UnhandledException event. El controlador de ese evento puede examinar la excepción y determinar si la ejecución puede proseguir.Your handler for that event can examine the exception and determine whether to continue execution.

    El evento UnhandledException no se genera en algunas circunstancias.The UnhandledException event is not raised in some circumstances. Para obtener más información, vea UnhandledException.For more information, see UnhandledException.

  • Cambios de conectividad de red.Network-connectivity changes. Si la disponibilidad de la red del equipo cambia, la aplicación genera el evento NetworkAvailabilityChanged.If the computer's network availability changes, the application raises the NetworkAvailabilityChanged event.

    El evento NetworkAvailabilityChanged no se genera en algunas circunstancias.The NetworkAvailabilityChanged event is not raised in some circumstances. Para obtener más información, vea NetworkAvailabilityChanged.For more information, see NetworkAvailabilityChanged.

  • Cierre de la aplicación.Application shut down. La aplicación proporciona el evento Shutdown para indicar cuándo se va a cerrar.The application provides the Shutdown event to signal when it is about to shut down. Este controlador de eventos permite garantizar que se realicen todas las operaciones que la aplicación debe llevar a cabo (guardar y cerrar, por ejemplo).In that event handler, you can make sure that the operations your application needs to perform—closing and saving, for example—are completed. La aplicación se puede configurar para cerrarse cuando lo haga el formulario principal, o solamente cuando se cierren todos los formularios.You can configure your application to shut down when the main form closes, or to shut down only when all forms close.

DisponibilidadAvailability

El modelo de aplicación Visual Basic está disponible de forma predeterminada para los proyectos de Windows Forms.By default, the Visual Basic Application model is available for Windows Forms projects. Si la aplicación se configura para que use un objeto de inicio distinto o inicie el código de aplicación con un objeto Sub Main personalizado, puede que ese objeto o clase deba proporcionar una implementación de la clase WindowsFormsApplicationBase para usar el modelo de aplicación.If you configure the application to use a different startup object, or start the application code with a custom Sub Main, then that object or class may need to provide an implementation of the WindowsFormsApplicationBase class to use the application model. Para más información sobre cómo cambiar el objeto de inicio, vea Página de aplicación, Diseñador de proyectos (Visual Basic).For information about changing the startup object, see Application Page, Project Designer (Visual Basic).

Vea tambiénSee also