Compartilhar via


Congelamento de eventos

Um contêiner pode notificar um controle de que ele não está pronto para responder a eventos chamando IOleControl::FreezeEvents com VERDADEIRO. Ele pode descongelar os eventos chamando FreezeEvents com false. Quando um contêiner congela eventos, ele está congelando o processamento de eventos, não o recebimento de eventos; ou seja, um contêiner ainda pode receber eventos enquanto os eventos são congelados. Se um contêiner receber uma notificação de evento enquanto seus eventos estiverem congelados, o contêiner deverá ignorar o evento. Nenhuma outra ação é apropriada.

Um controle deve tomar nota da chamada de um contêiner para FreezeEvents com VERDADEIRO se for importante para o controle que um evento não é perdido. Embora o processamento de eventos de um contêiner esteja congelado, um controle deve implementar uma das seguintes técnicas:

  • Acione os eventos com todo o conhecimento de que o contêiner não tomará nenhuma ação.
  • Descarte todos os eventos que o controle teria disparado.
  • Enfileira todos os eventos pendentes e dispare-os depois que o contêiner tiver chamado FreezeEvents com FALSE.
  • Enfileirar apenas eventos relevantes ou importantes e acioná-los depois que o contêiner tiver chamado FreezeEvents com false.

Cada técnica é aceitável e apropriada em circunstâncias diferentes. O desenvolvedor de controle é responsável por determinar e implementar a técnica apropriada para a funcionalidade do controle.