異步和同步系結
用戶端可藉由呼叫 IsAsyncMoniker 函式來檢查 Moniker 是否為異步。 如果用戶端傳回BINDF_ASYNCHRONOUS旗標,而不是從後續呼叫 IMoniker::BindTo 儲存體 或 IMoniker::BindToObject 傳回物件指標或儲存指標,moniker 會傳回MK_S_ASYNCHRONOUS取代對象指標,並將 NULL 取代儲存指標。 回應中,客戶端應該等候在 IBindStatusCallback::OnDataAvailable 和 IBindStatusCallBack::OnObjectAvailable 實作期間接收要求的物件或記憶體。
回呼物件也會透過 IBindStatusCallback::OnProgress 接收進度通知、透過 OnDataAvailable 的數據可用性通知,以及 Moniker 關於系結作業狀態的其他各種通知。
如果用戶端未從Moniker對IBindStatusCallback::GetBindInfo的呼叫傳回BINDF_ASYNCHRONOUS旗標,則系結作業會同步進行,而且會從後續對 BindToObject 或 BindTo 的呼叫傳回所需的物件或記憶體 儲存體。 同樣地,如果用戶端需要同步作業,而且不想收到任何進度通知或回呼,它可以要求異步 Moniker 以同步方式運作,而不實作 IBindStatusCallback。 在這種情況下,異步Moniker的行為會像標準同步Moniker一樣。
相關主題