Поделиться через


Метод 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 вызывает RetryRejectedCall в интерфейсе IMessageFilter вызывающего объекта сразу после получения SERVERCALL_RETRYLATER или SERVERCALL_REJECTED из метода IMessageFilter::HandleInComingCall в интерфейсе IMessageFilter вызываемого объекта.

Если вызываемая задача отклоняет вызов, приложение, вероятно, находится в состоянии, когда оно не может обрабатывать такие вызовы, возможно, только временно. В этом случае 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
Header objidl.h

См. также раздел

Imessagefilter