Compartilhar via


Como criar uma caixa de mensagem condicional "Aguarde..."

O exemplo a seguir ilustra como criar uma caixa de mensagem condicional que aparece e avisa ao usuário que uma tarefa em segundo plano ainda está em execução sempre que o usuário ativa um controle exibido prematuramente.

O exemplo também ilustra como o SpawnWaitDialog ControlEvent geralmente pode ser usado para proteger um controle que dispara uma ação dependente da conclusão de uma tarefa em segundo plano.

Neste exemplo, uma Caixa de Diálogo de Seleção que contém três controles de botão de push rotulados como Instalar Agora, Avançar e Custo do Disco é exibida para o usuário durante o processo de instalação. No entanto, o instalador também executa uma tarefa de custo de espaço em disco em segundo plano ao exibir essa caixa de diálogo. O autor deseja proteger esses botões contra a ativação e deseja que uma caixa de mensagem "Aguarde" apareça se o usuário clicar em qualquer um dos botões antes que o custo seja concluído. O autor também deseja que essa caixa de mensagem contenha um botão Cancelar e desapareça assim que a tarefa em segundo plano for concluída.

Para exibir uma caixa de diálogo solicitando que o usuário aguarde enquanto o custo do disco em segundo plano é concluído

  1. Use os recursos de criação do instalador para adicionar uma nova caixa de diálogo modal chamada WaitForCosting na tabela Dialog. A caixa de diálogo deve exibir uma cadeia de caracteres de texto que diz "Aguarde enquanto o custo do espaço em disco é concluído".
  2. Adicione um único controle do botão de ação a essa caixa de diálogo, rotulada Cancelar, criando-o na tabela Control.
  3. Vincule o botão de ação Cancelar a um ControlEvent que fecha a caixa de diálogo WaitForCosting criando um EndDialog ControlEvent na tabela ControlEvent. Defina o argumento do evento EndDialog Control como Exit.
  4. Vincule um SpawnWaitDialog ControlEvent aos controles existentes do botão de ação Instalar Agora, Próximo e Custo do Disco exibidos na Caixa de diálogo Seleção . Defina o argumento desse ControlEvent na tabela ControlEvent para ser a caixa de diálogo WaitForCosting e defina a expressão na coluna Condition da tabela como: CostundoComplete =1.