共用方式為


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。

傳回值

這個方法可以傳回下列值。

傳回值 描述
-1
應該取消呼叫。 COM 接著會從原始方法呼叫傳回RPC_E_CALL_REJECTED。
0 ≤ < 100
呼叫會立即重試。
100 ≤
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

注意 雖然 htaskCallee 參數的類型為 HTASK,但它包含所呼叫線程的線程標識碼。 當您實作 IMessageFilter 介面時,您可以呼叫 OpenThread 函式以從 htaskCallee 參數取得線程句柄,而且您可以呼叫 GetProcessIdOfThread 函式以取得進程識別符。
 

規格需求

需求
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限桌面應用程式]
目標平台 Windows
標頭 objidl.h

另請參閱

IMessageFilter