Visão geral do modelo de aplicativo do Visual Basic

Visual Basic fornece um modelo bem definido para controlar o comportamento de aplicativos do Windows Forms: o modelo de aplicativo do Visual Basic. Esse modelo inclui eventos para manipular a inicialização e o desligamento do aplicativo, bem como eventos para capturar exceções sem tratamento. Ele também fornece suporte para o desenvolvimento de aplicativos de instância única. O modelo de aplicativo é extensível, portanto, os desenvolvedores que precisam de mais controle podem personalizar os métodos substituíveis.

Usos para o modelo de aplicativo

Um aplicativo típico precisa executar tarefas ao iniciar e desligar. Por exemplo, quando é inicializado, o aplicativo pode exibir uma tela inicial, fazer conexões de banco de dados, carregar um estado salvo e assim por diante. Quando o aplicativo é desligado, ele pode fechar conexões de banco de dados, salvar o estado atual e assim por diante. Além disso, o aplicativo pode executar um código específico quando ele é encerrado de maneira inesperada, como durante uma exceção sem tratamento.

O modelo de aplicativo do Visual Basic facilita a criação de um aplicativo de instância única. Um aplicativo de instância única difere de um normal, pois apenas uma instância do aplicativo pode ser executada por vez. Uma tentativa de iniciar outra instância de um aplicativo de instância única resulta na notificação da instância original — por meio do evento StartupNextInstance — de que outra tentativa de inicialização foi feita. A notificação inclui os argumentos de linha de comando da instância subsequente. A instância subsequente do aplicativo é fechada antes que qualquer inicialização possa ocorrer.

Um aplicativo de instância única é iniciado e verifica se é a primeira instância ou uma instância subsequente do aplicativo:

  • Se for a primeira instância, ela inicia normalmente.

  • Cada tentativa subsequente de iniciar o aplicativo, enquanto a primeira instância é executada, resulta em um comportamento muito diferente. A tentativa subsequente notifica a primeira instância sobre os argumentos de linha de comando e sai imediatamente. A primeira instância manipula o evento StartupNextInstance para determinar quais foram os argumentos de linha de comando da instância subsequente e continua a ser executada.

    Este diagrama mostra como uma instância subsequente sinaliza a primeira instância:

    Diagram that shows a single instance application image.

Ao manipular o evento StartupNextInstance, você pode controlar como o aplicativo de instância única se comporta. Por exemplo, o Microsoft Outlook normalmente é executado como um aplicativo de instância única; quando o Outlook está em execução e você tenta iniciar o Outlook novamente, o foco muda para a instância original, mas outra instância não é aberta.

Eventos no Modelo de Aplicativo

Os seguintes eventos são encontrados no modelo de aplicativo:

  • Inicialização de aplicativos. O aplicativo aciona o evento Startup quando ele é iniciado. Ao manipular esse evento, você pode adicionar código que inicializa o aplicativo antes que o formulário principal seja carregado. O evento Startup também prevê o cancelamento da execução do aplicativo durante essa fase do processo de inicialização, se desejado.

    Você pode configurar o aplicativo para mostrar uma tela inicial enquanto o código de inicialização do aplicativo é executado. Por padrão, o modelo de aplicativo suprime a tela inicial quando o argumento de linha de comando /nosplash ou -nosplash é usado.

  • Aplicativos de instância única. O evento StartupNextInstance é gerado quando uma instância subsequente de um aplicativo de instância única é iniciada. O evento passa os argumentos de linha de comando da instância subsequente.

  • Exceções sem tratamento. Se o aplicativo encontrar uma exceção sem tratamento, ele acionará o evento UnhandledException. O manipulador para esse evento pode examinar a exceção e determinar se deve continuá-la.

    O evento UnhandledException não é gerado em algumas circunstâncias. Para obter mais informações, consulte UnhandledException.

  • Alterações de conectividade de rede. Se a disponibilidade de rede do computador for alterada, o aplicativo aciona o evento NetworkAvailabilityChanged.

    O evento NetworkAvailabilityChanged não é gerado em algumas circunstâncias. Para obter mais informações, consulte NetworkAvailabilityChanged.

  • Aplicativo desligado. O aplicativo fornece o evento Shutdown para sinalizar quando está prestes a ser desligado. Nesse manipulador de eventos, você pode garantir que as operações que o aplicativo precisa executar — fechar e salvar, por exemplo — sejam concluídas. Você pode configurar o aplicativo para desligar quando o formulário principal for fechado ou para desligar apenas quando todos os formulários fecharem.

Disponibilidade

Por padrão, o modelo de aplicativo do Visual Basic está disponível para projetos do Windows Forms. Se você configurar o aplicativo para usar um objeto de inicialização diferente ou iniciar o código do aplicativo com um Sub Main personalizado, talvez esse objeto ou classe precise fornecer uma implementação da classe WindowsFormsApplicationBase para usar o modelo de aplicativo. Para obter informações sobre como alterar o objeto de inicialização, confira Página do aplicativo, Designer de projeto (Visual Basic).

Confira também