Asynchrone und synchrone Moniker

Ein Client eines standardmäßigen, synchronen OLE-Monikers erstellt und enthält in der Regel einen Verweis auf den Moniker sowie den Bindungskontext, der während der Bindung verwendet werden soll. Die Komponenten, die bei der Verwendung herkömmlicher Moniker beteiligt sind, sind im folgenden Diagramm dargestellt.

Diagramm, das den Client zeigt, der entweder mit bind Context oder Any Moniker für das System bereitgestellt verbunden ist.

Clients erstellen in der Regel Standardmoniker, indem Sie Funktionen wie CreateFileMoniker, CreateItemMoniker oder CreatePointerMoniker aufrufen, oder, da sie in persistentem Speicher gespeichert werden können, über OleSaveToStream und OleLoadFromStream. Monikers können auch aus einem Containerobjekt abgerufen werden, indem die IBindHost::CreateMoniker-Methode aufgerufen wird . Clients erstellen Bindungskontexte, indem sie die CreateBindCtx-Funktion aufrufen und dann den Bindungskontext mit Aufrufen von IMoniker::BindToStorage oder IMoniker::BindToObject an den Moniker übergeben.

Wie im folgenden Diagramm gezeigt, erstellt und enthält ein Client eines asynchronen Monikers auch einen Verweis auf den Moniker- und Bindungskontext, der während der Bindung verwendet werden soll.

Diagramm, das die Verbindungen zwischen Client-Provided, Monker-Provided und System-Provided zeigt.

Um asynchrones Verhalten abzurufen, implementiert der Client die IBindStatusCallback-Schnittstelle für ein bind-status-callback-Objekt und ruft entweder die Funktion RegisterBindStatusCallback oder die CreateAsyncBindCtx-Funktion auf, um diese Schnittstelle beim Bindungskontext zu registrieren. Der Moniker übergibt einen Zeiger an seine IBinding-Schnittstelle in einem Aufruf der IBindStatusCallback::OnStartBinding-Methode . Der Client teilt dem asynchronen Moniker mit, wie er bei der Rückgabe des Aufrufs des Monikers an die IBindStatusCallback::GetBindInfo-Methode gebunden werden soll.

Asynchrone Moniker