Manipular eventos ADOHandling ADO Events

O modelo de evento ADO dá suporte a determinadas operações síncronas e assíncronas do ADO que emitem eventos, ou notificações, antes do início da operação ou após a conclusão.The ADO event model supports certain synchronous and asynchronous ADO operations that issue events, or notifications, before the operation starts or after it completes. Um evento é, na verdade, uma chamada para uma rotina de manipulador de eventos que você define no seu aplicativo.An event is actually a call to an event-handler routine that you define in your application.

Se você fornecer procedimentos ou funções de manipulador para o grupo de eventos que ocorrem antes do início da operação, você pode examinar ou modificar os parâmetros que foram passados para a operação.If you provide handler functions or procedures for the group of events that occur before the operation starts, you can examine or modify the parameters that were passed to the operation. Porque ele não foi executado ainda, você pode cancelar a operação ou permitir que ela seja concluída.Because it has not been executed yet, you can either cancel the operation or allow it to complete.

Os eventos que ocorrem após a conclusão de uma operação são especialmente importantes se você usar ADO de maneira assíncrona.The events that occur after an operation completes are especially important if you use ADO asynchronously. Por exemplo, um aplicativo que inicia um assíncrono Recordset.Open operação é notificada por um evento de conclusão de execução quando conclui a operação.For example, an application that starts an asynchronous Recordset.Open operation is notified by an execution complete event when the operation concludes.

Usando o modelo de evento ADO adiciona alguma sobrecarga ao seu aplicativo, mas oferece muito mais flexibilidade do que outros métodos de lidar com operações assíncronas, como o monitoramento do estado propriedade de um objeto com um loop.Using the ADO event model adds some overhead to your application but provides far more flexibility than other methods of dealing with asynchronous operations, such as monitoring the State property of an object with a loop.

Observação

Para manipular eventos, ADO precisa ter uma bomba de mensagem ou ser usado em um modelo de single-threaded apartment (STA).To handle events, ADO needs to have a message pump or be used in a single-threaded apartment (STA) model. Eventos ADO são tratados internamente com a criação de uma janela oculta.ADO events are internally handled by creating a hidden window. ADO posta mensagens para esta janela quando eventos precisam ser acionado.ADO posts messages to this window when events need to be fired. Isso é feito para garantir que os eventos são enviados para o thread que chamou IConnectionPoint:: no ponto de conexão.This is done to ensure that events are sent to the thread that called IConnectionPoint::Advise on the connection point. Essa arquitetura pode causar problemas quando o thread que deve receber as notificações não bomba de mensagens de janela.This architecture can cause problems when the thread that should receive the notifications does not pump window messages. Problemas em potencial incluem eventos ADO não estão sendo distribuídos para o thread e difusões de janela global atingindo o tempo limite e, possivelmente, retardando todo o sistema porque as janelas ocultas não processar as mensagens.Potential problems include ADO events not being delivered to the thread and global window broadcasts timing out and possibly slowing down the entire system because the hidden windows do not process the messages. Os threads STA normalmente têm uma bomba de mensagens em execução para que esse problema não se manifestar em threads STA.STA threads typically have a message pump running so this issue does not manifest itself on STA threads. Threads MTA, no entanto, geralmente não têm uma bomba de mensagem para que o problema geralmente se manifestará em threads MTA.MTA threads, however, do not typically have a message pump so the issue will typically manifest itself on MTA threads.

Esta seção contém os tópicos a seguir.This section contains the following topics.

Consulte tambémSee Also

Resumo do manipulador de eventos ADO ADO Event Handler Summary
Instanciação de evento ADO por linguagem ADO Event Instantiation by Language
Eventos ADO ADO Events
Parâmetros de evento Event Parameters
Tipos de eventosTypes of Events