Delen via


Asynchrone en synchrone binding

De client kan controleren of de moniker asynchroon is door de functie IsAsyncMoniker aan te roepen. Als de client de vlag BINDF_ASYNCHRONOUS retourneert in plaats van een objectaanwijzer of een opslagaanwijzer te retourneren van volgende aanroepen naar IMoniker::BindToStorage of IMoniker::BindToObject, retourneert de moniker MK_S_ASYNCHRONOUS in plaats van de objectaanwijzer en NULL- in plaats van de opslagaanwijzer. Als reactie moet de client wachten op het ontvangen van het aangevraagde object of de aangevraagde opslag tijdens de implementatie van IBindStatusCallback::OnDataAvailable en IBindStatusCallBack::OnObjectAvailable.

Het callback-object ontvangt ook voortgangsmeldingen via IBindStatusCallback::OnProgress, melding over gegevensbeschikbaarheid via OnDataAvailableen verschillende andere meldingen van de moniker over de status van de bindingsbewerking.

Als de client de BINDF_ASYNCHRONOUS vlag niet retourneert van de aanroep van de moniker naar IBindStatusCallback::GetBindInfo, wordt de bindingsbewerking synchroon uitgevoerd en wordt het gewenste object of de opslag geretourneerd van volgende aanroepen naar BindToObject of BindToStorage. Als de client een synchrone bewerking wenst en geen voortgangsmeldingen of callbacks wil ontvangen, kan het een asynchrone moniker aanvragen om synchroon te werken door IBindStatusCallback-niet te implementeren. In dergelijke gevallen gedraagt de asynchrone moniker zich zoals een standaardsynchrone moniker.

Asynchrone Monikers