VB 2005 - O objeto Application


O objeto Application representa a aplicação que esta em execução no nível mais alto. Ele fornece propriedades e métodos para iniciar um laço de eventos para processar mensagens Windows, possivelmente para um formulário. Fornecendo também métodos para controlar e parar estes eventos.

A classe Application fornece métodos e propriedades para gerenciar uma aplicação como métodos para iniciar e parar a aplicação , processar mensagens do Windows e propriedades que obtêm informação sobre uma aplicação.

Você não deve confundir o objeto Application com o namespace My.Application. Ambos possuem propósitos similares mas características muitos diferentes.

Application - Propriedades

A tabela a seguir descreve as propriedades mais úteis do objeto Application;

Propriedade Propósito
CommonAppDataPath Retorna o caminho onde o programa armazenara os dados da aplicação compartilhados com todos os usuários. Por padrão este caminho possui o formato base_path\ company_name\product_name\product_version onde base_path é basicamente C:\Documents and Settings\All Users\ Application Data.(C:\Documents and Settings\All Users\Dados de aplicativos)
CommonAppDataRegistry Retorna a chave do Registro onde o programa armazenara dados da aplicação compartilhados com todos os usuários. Por padrão este caminho possui o formatoHKEY_LOCAL_MACHINE\Software\company_name\product_name\product_version
CompanyName Retorna o nome da empresa.
CurrentCulture Obtêm ou define o objeto CultureInfo para esta thread.
CurrentInputLanguage Obtêm ou define InputLanguage para esta thread
ExecutablePath Retorna o caminho qualificado para o arquivo que inicia a execução incluindo o nome.
LocalUserAppDataPath Retorna o caminho onde o programa armazenará dados para este local.Por padrão , este caminho possui o formato : base_path\company_name\product_name\product_version, onde base_path é C:\Documents and Settings\user_name\LocalSettings\Application Data.Ex: C:\Documents and Settings\f5361091\Configurações locais\Application Data
MessageLoop Retorna True se a Thread possui um loop de mensagem . Se o programa inicia com um formulário este laço é criado automaticamente. Se o programa com um Sub Main, o loop não existe inicialmente e o programa deve iniciar pela chamada Application.Run.
OpenForms Retorna uma coleção que referencia todos os formulários abertos da aplicação.
ProductName Retorna o nome do produto.
ProductVersion Obtêm a versão do produto associado com a aplicação.
StartupPath Retorna o caminho qualificado para o diretório onde o programa inicia a execução.
UserAppDataPath Retorna o caminho onde o programa armazenará para o usuário. Por padrão este caminho possui o formato: base_path\company_name\product_name\product_version, onde o base_path é C:\Documents and Settings\user_name\Application Data.
UserAppDataRegistry Retorna a chave do registro onde o programa armazenará os dados da aplicação para este usuário.Por padrão o caminho possui o formato: HKEY_CURRENT_USER\Software\company_name\product_name\product_version
UseWaitCursor Determina se esta thread do formulário exibe um cursor de espera. Defina esta propriedade como True antes de executar qualquer operação demorada e quando a operação terminar retorna o valor para False.

Para definir o nome da empresa , o nome do produto e a sua versão abra o Solution Explorer clique duas vezes sobre a entrada My Project , e selecione a guia Application; clique então sobre o botão Assembly Information e entre os valores na janela de diálogo Assembly Information.

Application - Métodos

A seguir os métodos mais úteis do objeto Application;

Método Objetivo
AddMessageFilter Inclui um filtro de mensagem para monitorar o loop de eventos das mensagens Windows.
DoEvents Processa as mensagens Windows que estão atualmente na fila de mensagem. Se a thread esta realizando uma operação demorada , evita o congelamento da thread permitindo a execução de outras mensagens.
Exit Encerra a aplicação. É uma maneira abrupta de encerrar a aplicação e qualquer formulário que estiver carregado não executará os eventos FormClosing e FormClosed , por isso devemos ter certeza de que a aplicação executou o código para limpar seus objetos antes de chamar este método.
ExitThread Encerra a thread atual. uma maneira abrupta de encerrar a aplicação e qualquer formulário que estiver carregado não executará os eventos FormClosing e FormClosed
OnThreadException Executa o objeto da aplicação ThreadException, passando uma exceção. Se a aplicação lança uma exceção não capturada no IDE ele travará.
RemoveMessageFilter Remove o filtro da mensagem.
Run Executa o loop de mensagem para a thread atual. Se você passar este método para o objeto form, ele exibirá o formulário e processa as mensagens até ser fechado.
SetSuspendState Faz com que o sistema suspenda a operação ou hiberne. Quando o sistema hiberna ele grava o conteúdo da memória para o disco. Quando você reinicia o sistema ele continua com a aplicação anteriormente em execução. Quando o sistema suspende a operação ele entra em modo de baixa energia e pode continuar mais rapidamente do que se estivesse hibernando mas o conteúdo da memória não será salvo.

Application - Eventos

O objeto Application fornece alguns eventos que dá informação sobre o estado da aplicação;

Evento Objetivo
Idle Ocorre quando a aplicação encerra a execução de algum código e esta prestes a entrar no estado de espera aguardando algum evento.
ApplicationExit Ocorre quando a aplicação esta prestes a ser encerrada.(shut down)
ThreadException Ocorre quando a aplicação lança uma exceção não tratada.
ThreadExit Ocorre quando a thread esta prestes a ser encerrada.

Quando você encerra uma aplicação descarregando o seu formulário (Unload) , o programa recebe os eventos na seguinte ordem:

  1. FormClosing
  2. FormClosed
  3. ThreadExit
  4. ApplicationExit

Se você encerrar a aplicação chamando o método Exit do objeto Application (Application.Exit) , o programa somente recebe os eventos : ThreadExit e ApplicationExit. Se mais de uma thread estiver em execução cada uma recebe o evento ThreadExit e em seguida recebem o evento ApplicationExit.

Vejamos um exemplo que lista números em um controle ListBox. Cada vez que você clicar no botão , a aplicação inclui outro número na lista.

O método Main chama o método Run para iniciar a aplicação que cria o formulário , o ListBox1 e o Button1. Quando o usuário clica no botão Button1 o evento button1_Click exibe uma caixa de mensagem solicitando ao usuário se ele deseja encerrar a aplicação.(MessageBox)

Se o usuário clicar Não na MessageBox, o evento Click inclui um número na lista. Se o usuário clicar Sim , a aplicação chama o método Exit para processar todas as mensagens restantes na fila e então encerrar;

Public Class Form1
        Inherits Form

<STAThread()> _
Shared Sub Main()
   ' inicia a aplicação.
   Application.Run(New Form1)
End Sub

Private WithEvents button1 As Button
Private WithEvents listBox1 As ListBox

Public Sub New()
button1 = New Button
button1.Left = 200
button1.Text = "Sair"

listBox1 = New ListBox
Me.Controls.Add(button1)
Me.Controls.Add(listBox1)
End Sub

Private Sub button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles button1.Click
Dim count As Integer = 1
' Verifica se o usuário deseja sair da aplicação
' Se não inclui um numero na listbox
While (MessageBox.Show("Sair da aplicação?", "", MessageBoxButtons.YesNo) = DialogResult.No)

    listBox1.Items.Add(count)
    count += 1

End While

' sai da aplicação
Application.Exit()
End Sub

referências: http://msdn2.microsoft.com/en-us/library/system.windows.forms.application.aspx

Até o próximo artigo VB .NET ...


José Carlos Macoratti