Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les objets qui consomment des données à partir d’une source externe doivent parfois être informés lorsque les données de cette source changent. Par exemple, une visionneuse à bandes de cycles boursiers qui s’appuie sur des données dans une feuille de calcul doit être avertie lorsque ces données changent afin qu’elles puissent mettre à jour son affichage. De même, un document composé a besoin d’informations sur les modifications de données dans ses objets incorporés afin qu’il puisse mettre à jour ses caches de données. Dans ce cas, lorsque la mise à jour dynamique des données est souhaitable, les sources de données nécessitent un mécanisme permettant d’informer les consommateurs de données des modifications lorsqu’ils se produisent sans obliger les consommateurs à tout supprimer pour mettre à jour leurs données. Idéalement, après avoir été averti qu’une modification s’est produite dans la source de données, un objet consommateur peut demander une copie mise à jour à ses loisirs.
Le mécanisme com de gestion des notifications asynchrones de ce type est un objet appelé récepteur d’avis, qui est simplement tout objet COM qui implémente une interface appelée IAdviseSink. Les consommateurs de données implémentent les IAdviseSink. Ils s’inscrivent pour recevoir des notifications envoyant un pointeur vers l’objet de données d’intérêt.
Les interfacesIAdviseSinkexposent les méthodes suivantes pour recevoir des notifications asynchrones :
Comme le indique le tableau, l’interface IAdviseSink expose des méthodes permettant de notifier le récepteur d’avertissement des événements autres que les modifications apportées aux données de l’objet appelant. L’objet appelant peut également notifier le récepteur lorsque la façon dont il se dessine lui-même change, ou qu’il est renommé, enregistré ou fermé. Ces autres notifications sont utilisées principalement ou entièrement dans le contexte de documents composés, bien que le mécanisme de notification soit identique. Pour plus d’informations sur les notifications composées de documents, consultez « Documents composés ».
Pour tirer parti du récepteur de conseils, une source de données doit implémenter IDataObject ::D Advise, IDataObject ::D Unadviseet IDataObject ::EnumDAdvise. Un consommateur de données appelle la méthode DAdvise pour notifier un objet de données qu’il souhaite être averti lorsque les données de l’objet changent. L’objet consommateur appelle la méthode DUnadvise pour supprimer cette connexion. Toute partie intéressée peut appeler la méthode EnumDAdvise pour apprendre le nombre d’objets ayant une connexion de conseil avec un objet de données.
Lorsque les données changent à la source, l’objet de données appelle IAdviseSink ::OnDataChange sur tous les consommateurs de données inscrits pour recevoir des notifications. Pour suivre les connexions de conseil et gérer la répartition des notifications, les sources de données s’appuient sur un objet appelé titulaire de conseils de données. Vous pouvez créer votre propre titulaire de conseils de données en implémentant l’interface IDataAdviseHolder. Vous pouvez également laisser COM le faire pour vous en appelant la fonction d’assistance CreateDataAdviseHolder.