IMessageFilter::RetryRejectedCall
A
client-based method that gives the application an opportunity to display a
dialog box so the user can retry or cancel the call, or switch to the task
identified by threadIDCallee.
DWORD RetryRejectedCall(
HTASK threadIDCallee, |
//Server task handle |
DWORD dwTickCount, |
//Elapsed tick count |
DWORD dwRejectType
|
//Returned rejection message |
); |
|
Parameters
threadIDCallee
[in] Handle
of the server task that rejected the call.
dwTickCount
[in] Number
of elapsed ticks since the call was made.
dwRejectType
[in]
Specifies either SERVERCALL_REJECTED or SERVERCALL_RETRYLATER, as returned by
the object application.
Return Values
-1
The call
should be canceled. OLE then returns RPC_E_CALL_REJECTED from the original
method call.
Value
>= 0 and <100
The call is
to be retried immediately.
Value
>= 100
OLE will wait
for this many milliseconds and then retry the call.
Remarks
OLE
calls RetryRejectedCall on the caller s IMessageFilter
immediately after receiving SERVERCALL_RETRYLATER or SERVERCALL_REJECTED from
the IMessageFilter::HandleInComingCall method on the callee s IMessageFilter.
If a
called task rejects a call, the application is probably in a state where it
cannot handle such calls, possibly only temporarily. When this occurs, OLE
returns to the caller and issues IMessageFilter::RetryRejectedCall to
determine if it should retry the rejected call.
Applications
should silently retry calls that have returned with SERVERCALL_RETRYLATER. If,
after a reasonable amount of time has passed, say about 30 seconds, the
application should display the busy dialog box; a standard implementation of
this dialog box is available in the OLEDLG library. The callee may momentarily
be in a state where calls can be handled. The option to wait and retry is
provided for special kinds of calling applications, such as background tasks
executing macros or scripts, so that they can retry the calls in a nonintrusive
way.
If,
after a dialog box is displayed, the user chooses to cancel, RetryRejectedCall
returns -1 and the call will appear to fail with RPC_E_CALL_REJECTED.