Share via


Gestion des événements ADO

Le modèle d’événements ADO prend en charge certaines opérations ADO synchrones et asynchrones qui émettent des événements ou des notifications avant le démarrage ou une fois l’opération terminée. Un événement est en fait un appel à une routine de gestionnaire d’événements que vous définissez dans votre application.

Si vous fournissez des fonctions de gestionnaire ou des procédures pour le groupe d’événements qui se produisent avant le démarrage de l’opération, vous pouvez examiner ou modifier les paramètres passés à l’opération. Comme elle n’a pas encore été exécutée, vous pouvez annuler l’opération ou l’autoriser à se terminer.

Les événements qui se produisent après la fin d’une opération sont particulièrement importants si vous utilisez ADO de manière asynchrone. Par exemple, une application qui démarre une opération Recordset.Open asynchrone est avertie par un événement complet d’exécution lorsque l’opération se termine.

L’utilisation du modèle d’événements ADO ajoute une surcharge à votre application, mais offre beaucoup plus de flexibilité que d’autres méthodes de traitement des opérations asynchrones, telles que la surveillance de la propriété State d’un objet avec une boucle.

Notes

Pour gérer les événements, ADO doit avoir une pompe de messages ou être utilisée dans un modèle STA (Single-Threaded Apartment). Les événements ADO sont gérés en interne en créant une fenêtre masquée. ADO publie des messages dans cette fenêtre lorsque des événements doivent être déclenchés. Pour vous assurer que les événements sont envoyés au thread appelé IConnectionPoint::Advise sur le point de connexion. Cette architecture peut entraîner des problèmes lorsque le thread qui doit recevoir les notifications ne pompe pas les messages de fenêtre. Les problèmes potentiels incluent les événements ADO qui ne sont pas remis au thread et aux diffusions de fenêtre globale qui expirent et ralentissent éventuellement l’ensemble du système, car les fenêtres masquées ne traitent pas les messages. Les threads STA ont généralement une pompe de message en cours d’exécution afin que ce problème ne se manifeste pas sur les threads STA. Toutefois, les threads MTA n’ont généralement pas de pompe de message pour que le problème se manifeste généralement sur les threads MTA.

Cette section contient les rubriques suivantes :

Voir aussi

Présentation rapide du gestionnaire d’événements ADO
Instanciation des événements ADO par langage
Événements ADO
Paramètres des événements
Types d’événements