Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Objekte, die Daten aus einer externen Quelle nutzen, müssen manchmal informiert werden, wenn sich Daten in dieser Quelle ändern. Beispielsweise muss ein Börsentickerbandanzeiger, der auf Daten in einigen Tabellenkalkulationen basiert, benachrichtigt werden, wenn sich die Daten ändern, damit sie seine Anzeige aktualisieren kann. Ebenso benötigt ein zusammengesetztes Dokument Informationen zu Datenänderungen in seinen eingebetteten Objekten, damit es seine Datencaches aktualisieren kann. In Solchen Fällen, in denen eine dynamische Aktualisierung von Daten wünschenswert ist, erfordern Datenquellen einen Mechanismus, mit dem Datenkonsumenten änderungen benachrichtigt werden, sobald sie auftreten, ohne dass die Verbraucher verpflichtet sind, alles abzulegen, um ihre Daten zu aktualisieren. Im Idealfall kann ein verbrauchendes Objekt nach einer aktualisierten Kopie nach belieben werden, nachdem eine Änderung in der Datenquelle erfolgt ist.
DER COM-Mechanismus für die Behandlung asynchroner Benachrichtigungen dieses Typs ist ein Objekt, das als Empfehlungsspüle bezeichnet wird. Dabei handelt es sich lediglich um ein COM-Objekt, das eine Schnittstelle namens IAdviseSinkimplementiert. Verbraucher von Daten implementieren die IAdviseSink. Sie registrieren sich, um Benachrichtigungen zu erhalten, indem sie einen Zeiger an das datenobjekt von Interesse übergeben.
Die IAdviseSink- Schnittstellen machen die folgenden Methoden für den Empfang asynchroner Benachrichtigungen verfügbar:
| Methode | Benachrichtigt den Rat, dass |
|---|---|
|
OnDataChange- |
Die Daten des aufrufenden Objekts wurden geändert. |
|
OnViewChange- |
Die Anweisungen zum Zeichnen des aufrufenden Objekts wurden geändert. |
|
OnRename- |
Der Moniker des aufrufenden Objekts hat sich geändert. |
|
OnSave- |
Das aufrufende Objekt wurde im beständigen Speicher gespeichert. |
|
OnClose- |
Das aufrufende Objekt wurde geschlossen. |
Wie die Tabelle angibt, macht die IAdviseSink--Schnittstelle Methoden zum Benachrichtigen des Spülens von Ereignissen verfügbar, die keine Änderungen in den Daten des aufrufenden Objekts sind. Das aufrufende Objekt kann die Spüle auch benachrichtigen, wenn sich die Art und Weise, in der es sich selbst zeichnet, ändert oder umbenannt, gespeichert oder geschlossen wird. Diese anderen Benachrichtigungen werden hauptsächlich oder vollständig im Kontext zusammengesetzter Dokumente verwendet, obwohl der Benachrichtigungsmechanismus identisch ist. Weitere Informationen zu Verbunddokumentbenachrichtigungen finden Sie unter "Zusammengesetzte Dokumente".
Um die Empfehlungsspüle nutzen zu können, muss eine Datenquelle IDataObject::D Advise, IDataObject::D Unadviseund IDataObject::EnumDAdviseimplementieren. Ein Datenanwender ruft die DAdvise-Methode auf, um ein Datenobjekt zu benachrichtigen, dass es benachrichtigt werden soll, wenn sich die Daten des Objekts ändern. Das verwendende Objekt ruft die DUnadvise--Methode auf, um diese Verbindung zu zerreißen. Jede interessierte Partei kann die EnumDAdvise--Methode aufrufen, um die Anzahl der Objekte zu erlernen, die eine beratende Verbindung mit einem Datenobjekt haben.
Wenn daten an der Quelle geändert werden, ruft das Datenobjekt IAdviseSink::OnDataChange für alle Datenkonsumenten auf, die sich für den Empfang von Benachrichtigungen registriert haben. Um die Versendung von Benachrichtigungen nachzuverfolgen und die Versendung von Benachrichtigungen zu verwalten, verlassen sich Datenquellen auf ein Objekt, das als Datenberater bezeichnet wird,. Sie können einen eigenen Datenberater erstellen, indem Sie die IDataAdviseHolder Schnittstelle implementieren. Alternativ können Sie COM für Sie ausführen lassen, indem Sie die Hilfsfunktion CreateDataAdviseHolderaufrufen.