用戶端可藉由呼叫 isAsyncMoniker 函式來檢查 Moniker 是否為異步。 如果用戶端傳回BINDF_ASYNCHRONOUS旗標,而不是從後續呼叫 IMoniker::BindToStorage 或 IMoniker::BindToObject傳回對象指標或儲存指標,moniker 會傳回MK_S_ASYNCHRONOUS取代物件指標,並 NULL 取代儲存指標。 作為回應,客戶端應該等待在實作 IBindStatusCallback::OnDataAvailable 和 IBindStatusCallBack::OnObjectAvailable期間接收請求的物件或空間。
回呼物件也會透過 IBindStatusCallback::OnProgress接收進度通知,透過 OnDataAvailable接收資料可用性通知,以及接收 Moniker 中關於綁定操作狀態的各種其他通知。
如果用戶端從 moniker 呼叫 IBindStatusCallback::GetBindInfo時,未傳回 BINDF_ASYNCHRONOUS 標誌,則系結操作會同步進行,並且所需的物件或存儲會在後續呼叫 BindToObject 或 BindToStorage時被返回。 同樣地,如果用戶希望進行同步操作,而且不想收到任何進度通知或回呼,則用戶可以要求一個異步的 moniker 來使其同步運作,只需不實作 IBindStatusCallback。 在這種情況下,異步 Moniker 的行為會像標準同步 Moniker 一樣。
相關主題