Dela via


Asynkron och synkron bindning

Klienten kan kontrollera om monikern är asynkron genom att anropa funktionen IsAsyncMoniker. Om klienten returnerar flaggan BINDF_ASYNCHRONOUS i stället för att returnera en objektpekare eller en lagringspekare från efterföljande anrop till IMoniker::BindToStorage eller IMoniker::BindToObjectreturnerar monikern MK_S_ASYNCHRONOUS i stället för objektpekaren och NULL- i stället för lagringspekaren. Som svar bör klienten vänta med att ta emot det begärda objektet eller lagringen under implementeringen av IBindStatusCallback::OnDataAvailable och IBindStatusCallBack::OnObjectAvailable.

Motringningsobjektet tar också emot förloppsmeddelanden via IBindStatusCallback::OnProgress, meddelande om datatillgänglighet via OnDataAvailableoch olika andra meddelanden från monikern om status för bindningsåtgärden.

Om klienten inte returnerar flaggan BINDF_ASYNCHRONOUS från monikerns anrop till IBindStatusCallback::GetBindInfofortsätter bindningsåtgärden synkront och önskat objekt eller lagringsutrymme returneras från efterföljande anrop till BindToObject- eller BindToStorage. Om klienten önskar synkron drift och inte vill ta emot några framstegsmeddelanden eller återuppringningar, kan den på samma sätt begära att en asynkron moniker uppför sig synkront genom att inte implementera IBindStatusCallback. I sådana fall fungerar den asynkrona monikern som en synkron standardmoniker.

Asynkrona Monikers