Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Objecten die gegevens van een externe bron verbruiken, moeten soms worden geïnformeerd wanneer gegevens in die bron worden gewijzigd. Een tapeviewer voor aandelen ticker die afhankelijk is van gegevens in een spreadsheet, moet bijvoorbeeld worden gewaarschuwd wanneer die gegevens worden gewijzigd, zodat deze de weergave kan bijwerken. Op dezelfde manier heeft een samengesteld document informatie nodig over gegevenswijzigingen in de ingesloten objecten, zodat de gegevenscaches kunnen worden bijgewerkt. In dergelijke gevallen, waarbij dynamische updates van gegevens wenselijk zijn, vereisen bronnen van gegevens een mechanisme om gegevensgebruikers op de hoogte te stellen van wijzigingen wanneer ze optreden zonder de consumenten te verplichten alles te verwijderen om hun gegevens bij te werken. In het ideale gevallen kan een verbruikend object om een bijgewerkte kopie vragen wanneer deze is gewijzigd in de gegevensbron.
Com's mechanisme voor het verwerken van asynchrone meldingen van dit type is een object genaamd een advies sink, dat gewoon een COM-object dat een interface implementeert die IAdviseSink. Consumenten van gegevens implementeren de IAdviseSink. Ze registreren zich om meldingen te ontvangen door een aanwijzer te geven aan het gegevensobject van belang.
De IAdviseSink interfaces bevatten de volgende methoden voor het ontvangen van asynchrone meldingen:
| Methode | Informeert de adviessink dat |
|---|---|
|
OnDataChange- |
De gegevens van het aanroepende object zijn gewijzigd. |
|
OnViewChange- |
De instructies voor het tekenen van het aanroepende object zijn gewijzigd. |
|
OnRename- |
De moniker van het aanroepende object is gewijzigd. |
|
opslaan |
Het aanroepende object is opgeslagen in permanente opslag. |
|
OnClose- |
Het aanroepende object is gesloten. |
Zoals in de tabel wordt aangegeven, biedt de IAdviseSink interface methoden voor het melden van de advies-sink van andere gebeurtenissen dan wijzigingen in de gegevens van het aanroepende object. Het aanroepende object kan ook de sink waarschuwen wanneer de manier waarop het zichzelf tekent, of de naam ervan wordt gewijzigd, opgeslagen of gesloten. Deze andere meldingen worden voornamelijk of volledig gebruikt in de context van samengestelde documenten, hoewel het meldingsmechanisme identiek is. Zie Samengestelde documenten voor meer informatie over samengestelde documentmeldingen.
Als u wilt profiteren van de adviessink, moet een gegevensbron IDataObject::D Advise-implementeren, IDataObject::D Unadvise-en IDataObject::EnumDAdvise-. Een gegevensconsumer roept de DAdvise-methode aan om een gegevensobject op de hoogte te stellen dat het op de hoogte moet worden gesteld wanneer de gegevens van het object worden gewijzigd. Het verbruikende object roept de methode DUnadvise aan om deze verbinding te verbreken. Elke belanghebbende kan de methode EnumDAdvise aanroepen om het aantal objecten met een adviesverbinding met een gegevensobject te leren.
Wanneer gegevens bij de bron worden gewijzigd, roept het gegevensobject IAdviseSink::OnDataChange aan op alle gegevensgebruikers die zijn geregistreerd om meldingen te ontvangen. Om adviesverbindingen bij te houden en de verzending van meldingen te beheren, zijn gegevensbronnen afhankelijk van een object dat een gegevensadvieshouderwordt genoemd. U kunt uw eigen gegevensadvieshouder maken door de IDataAdviseHolder interface te implementeren. Of u kunt COM dit voor u laten doen door de helperfunctie aan te roepen CreateDataAdviseHolder.