IMessageFilter::RetryRejectedCall 方法 (objidl.h)

为应用程序提供显示提供重试、取消或任务切换选项的对话框的机会。

语法

DWORD RetryRejectedCall(
  [in] HTASK htaskCallee,
  [in] DWORD dwTickCount,
  [in] DWORD dwRejectType
);

参数

[in] htaskCallee

被调用应用程序的线程 ID。

[in] dwTickCount

自调用以来经过的计时周期数。

[in] dwRejectType

指定对象应用程序返回的SERVERCALL_REJECTED或SERVERCALL_RETRYLATER。

返回值

此方法可以返回以下值。

返回值 说明
-1
应取消调用。 然后,COM 从原始方法调用返回RPC_E_CALL_REJECTED。
0 ≤ < 100
将立即重试该调用。
100 ≤
COM 将等待此毫秒,然后重试调用。

注解

COM 在从被调用方的 IMessageFilter 接口上的 IMessageFilter::HandleInComingCall 方法收到SERVERCALL_RETRYLATER或SERVERCALL_REJECTED后,立即在调用方的 IMessageFilter 接口上调用 RetryRejectedCall

如果被调用的任务拒绝调用,则应用程序可能处于无法处理此类调用的状态,可能只是暂时的。 发生这种情况时,COM 将返回到调用方并发出 RetryRejectedCall ,以确定它是否应重试拒绝的呼叫。

应用程序应以无提示方式重试使用 SERVERCALL_RETRYLATER 返回的调用。 如果经过合理的时间后,例如大约 30 秒,应用程序应显示忙碌对话框;OLEDLG 库中提供了此对话框的标准实现。 被调用方可能暂时处于可以处理调用的状态。 为特殊类型的调用应用程序(例如执行宏或脚本的后台任务)提供了等待和重试选项,以便它们以非侵入性方式重试调用。

如果在显示对话框后,用户选择取消, RetryRejectedCall 将返回 -1,并且调用将显示为失败并RPC_E_CALL_REJECTED。

如果客户端实现 IMessageFilter 并在远程计算机上调用服务器方法,则不会调用 RetryRejectedCall

注意 尽管 htaskCallee 参数类型化为 HTASK,但它包含被调用线程的线程 ID。 实现 IMessageFilter 接口时,可以调用 OpenThread 函数从 htaskCallee 参数获取线程句柄,并且可以调用 GetProcessIdOfThread 函数来获取进程 ID。
 

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 objidl.h

另请参阅

IMessageFilter