次の方法で共有


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