IMessageFilter::RetryRejectedCall 方法 (objidl.h)
讓應用程式有機會顯示提供重試、取消或工作切換選項的對話方塊。
語法
DWORD RetryRejectedCall(
[in] HTASK htaskCallee,
[in] DWORD dwTickCount,
[in] DWORD dwRejectType
);
參數
[in] htaskCallee
所呼叫應用程式的線程標識碼。
[in] dwTickCount
自呼叫之後經過的刻度數目。
[in] dwRejectType
指定物件應用程式所傳回的SERVERCALL_REJECTED或SERVERCALL_RETRYLATER。
傳回值
這個方法可以傳回下列值。
傳回值 | 描述 |
---|---|
|
應該取消呼叫。 COM 接著會從原始方法呼叫傳回RPC_E_CALL_REJECTED。 |
|
呼叫會立即重試。 |
|
COM 會等候這多毫秒,然後重試呼叫。 |
備註
COM 會在呼叫端的 IMessageFilter 介面上立即在呼叫端的 IMessageFilter 介面上呼叫 RetryRejectedCall,並在被呼叫者的 IMessageFilter 介面上 SERVERCALL_RETRYLATER收到 IMessageFilter 介面上的SERVERCALL_REJECTED或SERVERCALL_REJECTED。
如果呼叫的工作拒絕呼叫,則應用程式可能處於無法處理這類呼叫的狀態,可能只是暫時處理。 發生這種情況時,COM 會返回呼叫端併發出 RetryRejectedCall ,以判斷它是否應該重試拒絕的呼叫。
應用程式應該以無訊息方式重試以SERVERCALL_RETRYLATER傳回的呼叫。 如果經過合理的時間量之後,假設大約 30 秒,應用程式應該會顯示忙碌對話方塊;OLEDLG 連結庫中提供此對話框的標準實作。 被呼叫者可能暫時處於可以處理呼叫的狀態。 系統會針對特殊種類的呼叫應用程式提供等候和重試的選項,例如執行宏或腳本的背景工作,以便以非干擾的方式重試呼叫。
如果在顯示對話框之後,用戶選擇取消 RetryRejectedCall 會傳回 -1,而且呼叫看起來會失敗並出現RPC_E_CALL_REJECTED。
如果客戶端實作 IMessageFilter 並在遠端電腦上呼叫伺服器方法,則不會呼叫 RetryRejectedCall 。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | objidl.h |