다음을 통해 공유


비동기 및 동기 바인딩

클라이언트는 IsAsyncMoniker 함수를 호출하여 모니커가 비동기인지 여부를 확인하기 위해 검사 수 있습니다. 클라이언트가 IMoniker::BindToStorage 또는 IMoniker::BindToObject에 대한 후속 호출에서 개체 포인터 또는 스토리지 포인터를 반환하지 않고 BINDF_ASYNCHRONOUS 플래그를 반환하는 경우 모니커는 스토리지 포인터 대신 개체 포인터 및 NULL 대신 MK_S_ASYNCHRONOUS 반환합니다. 이에 대한 응답으로 클라이언트는 IBindStatusCallback::OnDataAvailableIBindStatusCallBack::OnObjectAvailable을 구현하는 동안 요청된 개체 또는 스토리지를 받을 때까지 기다려야 합니다.

또한 콜백 개체는 IBindStatusCallback::OnProgress, OnDataAvailable을 통한 데이터 가용성 알림 및 바인딩 작업의 상태 대한 모니커의 다양한 기타 알림을 통해 진행률 알림을 받습니다.

클라이언트가 IBindStatusCallback::GetBindInfo에 대한 모니커의 호출에서 BINDF_ASYNCHRONOUS 플래그를 반환하지 않으면 바인딩 작업이 동기적으로 진행되며 BindToObject 또는 BindToStorage에 대한 후속 호출에서 원하는 개체 또는 스토리지가 반환됩니다. 마찬가지로 클라이언트가 동기 작업을 원하고 진행률 알림 또는 콜백을 수신하지 않으려는 경우 IBindStatusCallback을 구현하지 않음으로써 비동기 모니커가 동기적으로 동작하도록 요청할 수 있습니다. 이러한 경우 비동기 모니커는 표준 동기 모니커처럼 동작합니다.

비동기 모니커