Асинхронные и синхронные моникеры
Клиент стандартного, синхронного моникера OLE обычно создает и содержит ссылку на моникер, а также контекст привязки, используемый во время привязки. Компоненты, участвующие в использовании традиционных моникеров, показаны на следующей схеме.
Клиенты обычно создают стандартные моникеры путем вызова таких функций, как CreateFileMoniker, CreateItemMoniker или CreatePointerMoniker или, так как их можно сохранить в постоянном хранилище с помощью OleSaveToStream и OleLoadFromStream. Моникеры также могут быть получены из объекта контейнера путем вызова метода IBindHost::CreateMoniker. Клиенты создают контексты привязки путем вызова функции CreateBindCtx, а затем передают контекст привязки моникеру с вызовами IMoniker::BindTo служба хранилища или IMoniker::BindToObject.
Как показано на следующей схеме, клиент асинхронного моникера также создает и содержит ссылку на моникер и контекст привязки, используемый во время привязки.
Чтобы получить асинхронное поведение, клиент реализует интерфейс IBindStatusCallback в объекте вызова bind-status-callback и вызывает функцию RegisterBindStatusCallback или функцию CreateAsyncBindCtx для регистрации этого интерфейса в контексте привязки. Моникер передает указатель на его интерфейс IBinding в вызове метода IBindStatusCallback::OnStartBinding. Клиент сообщает асинхронный моникер, как он хочет привязаться к вызову моникера к методу IBindStatusCallback::GetBindInfo.
См. также