Asynchrone und synchrone Bindung

Der Client kann überprüfen, ob der Moniker asynchron ist, indem er die IsAsyncMoniker-Funktion aufruft. Wenn der Client das BINDF ASYNCHRONOUS-Flag zurückgibt, anstatt einen Objektzeiger oder einen Speicherzeiger aus nachfolgenden Aufrufen von _ IMoniker::BindToStorage oder IMoniker::BindToObjectzurückgibt, gibt der Moniker MK S ASYNCHRONOUS anstelle des Objektzeigers und NULL anstelle des Speicherzeigers _ _ zurück. Als Antwort sollte der Client während der Implementierung von IBindStatusCallback::OnDataAvailable und IBindStatusCallBack::OnObjectAvailableauf den Empfang des angeforderten Objekts oder Speichers warten.

Das Rückrufobjekt empfängt auch eine Statusbenachrichtigung über IBindStatusCallback::OnProgress,eine Datenverfügbarkeitsbenachrichtigung über OnDataAvailableund verschiedene andere Benachrichtigungen vom Moniker über den Status des Bindungsvorgang.

Wenn der Client das BINDF ASYNCHRONOUS-Flag nicht aus dem Aufruf von _ IBindStatusCallback::GetBindInfodes Monikers zurück gibt, wird der Bindungsvorgang synchron fortgesetzt, und das gewünschte Objekt oder der gewünschte Speicher wird von nachfolgenden Aufrufen von BindToObject oder BindToStorage zurückgegeben. Wenn der Client einen synchronen Vorgang möchte und keine Statusbenachrichtigungen oder Rückrufe empfangen möchte, kann er einen asynchronen Moniker anfordern, um sich synchron zu verhalten, indem IBindStatusCallbacknicht implementieren wird. In solchen Fällen verhält sich der asynchrone Moniker wie ein synchroner Standardmoniker.

Asynchrone Moniker