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 TRUE. 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 TRUE se for importante para o controle que um evento não seja perdido. Enquanto o processamento de eventos de um contêiner é congelado, um controle deve implementar uma das seguintes técnicas:

  • Dispare os eventos com pleno conhecimento de que o contêiner não tomará nenhuma ação.
  • Descartar todos os eventos que o controle teria disparado.
  • Enfileire todos os eventos pendentes e dispare-os depois que o contêiner chamar FreezeEvents com FALSE.
  • Coloque na fila apenas eventos relevantes ou importantes e dispare-os depois que o contêiner chamar FreezeEvents com FALSE.

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