Control de eventos de ADO
El modelo de eventos de ADO admite determinadas operaciones de ADO sincrónicas y asincrónicas que emiten eventos , o notificaciones, antes de que se inicie o después de que se complete la operación. Un evento es realmente una llamada a una rutina de controlador de eventos que se define en la aplicación.
Si proporciona funciones o procedimientos de controlador para el grupo de eventos que se producen antes de que se inicie la operación, puede examinar o modificar los parámetros que se pasaron a la operación. Dado que aún no se ha ejecutado, puede cancelar la operación o permitir que se complete.
Los eventos que se producen después de que se complete una operación son especialmente importantes si usa ADO de forma asincrónica. Por ejemplo, una aplicación que inicia una operación asincrónica de Recordset.Open recibe una notificación por un evento de ejecución completo cuando finaliza la operación.
El uso del modelo de eventos de ADO agrega cierta sobrecarga a la aplicación, pero proporciona mucha más flexibilidad que otros métodos para tratar con operaciones asincrónicas, como supervisar la propiedad state de un objeto con un bucle.
Nota
Para controlar eventos, ADO debe tener una bomba de mensajes o usarse en un modelo de apartamento de un solo subproceso (STA). Los eventos de ADO se controlan internamente mediante la creación de una ventana oculta. ADO envía mensajes a esta ventana cuando es necesario desencadenar eventos. Esto se hace para asegurarse de que los eventos se envíen al hilo de ejecución que realizó la llamada a IConnectionPoint::Advise en el punto de conexión. Esta arquitectura puede causar problemas cuando el subproceso que debe recibir las notificaciones no bombea mensajes de ventana. Los problemas potenciales incluyen que los eventos de ADO no se entreguen al subproceso y que las retransmisiones globales de ventanas puedan agotarse por tiempo, lo que puede ralentizar todo el sistema porque las ventanas ocultas no están procesando los mensajes. Normalmente, los subprocesos STA tienen una bomba de mensajes en ejecución, por lo que este problema no se manifiesta en subprocesos STA. Sin embargo, los subprocesos de MTA no suelen tener una bomba de mensajes, por lo que el problema normalmente se manifestará en subprocesos MTA.
Esta sección contiene los temas siguientes.
creación de instancias de eventos de ADO por language
Consulte también
Resumen del Controlador de Eventos de ADO
Instanciación de eventos de ADO por idioma
eventos de ADO
Parámetros del evento
Tipos de eventos