Compartir a través de


Método IMessageFilter::RetryRejectedCall (objidl.h)

Proporciona a las aplicaciones la oportunidad de mostrar un cuadro de diálogo que ofrece opciones de reintento, cancelación o conmutación de tareas.

Sintaxis

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

Parámetros

[in] htaskCallee

Identificador de subproceso de la aplicación llamada.

[in] dwTickCount

Número de tics transcurridos desde que se realizó la llamada.

[in] dwRejectType

Especifica SERVERCALL_REJECTED o SERVERCALL_RETRYLATER, tal y como devuelve la aplicación de objeto.

Valor devuelto

Este método puede devolver los siguientes valores.

Valor devuelto Descripción
-1
La llamada debe cancelarse. A continuación, COM devuelve RPC_E_CALL_REJECTED desde la llamada al método original.
0 ≤ valor< 100
La llamada se volverá a intentar inmediatamente.
Valor de 100 ≤
COM esperará muchos milisegundos y, a continuación, volverá a intentar la llamada.

Comentarios

COM llama a RetryRejectedCall en la interfaz IMessageFilter del autor de la llamada inmediatamente después de recibir SERVERCALL_RETRYLATER o SERVERCALL_REJECTED desde el método IMessageFilter::HandleInComingCall en la interfaz IMessageFilter del destinatario.

Si una tarea llamada rechaza una llamada, es probable que la aplicación esté en un estado en el que no pueda controlar dichas llamadas, posiblemente solo temporalmente. Cuando esto ocurre, COM vuelve al autor de la llamada y emite RetryRejectedCall para determinar si debe reintentar la llamada rechazada.

Las aplicaciones deben reintentar de forma silenciosa las llamadas que se han devuelto con SERVERCALL_RETRYLATER. Si, una vez transcurrido un período de tiempo razonable, digamos unos 30 segundos, la aplicación debe mostrar el cuadro de diálogo ocupado; Hay disponible una implementación estándar de este cuadro de diálogo en la biblioteca OLEDLG. El destinatario puede estar momentáneamente en un estado en el que se pueden controlar las llamadas. La opción de esperar y reintentar se proporciona para tipos especiales de aplicaciones de llamada, como tareas en segundo plano que ejecutan macros o scripts, para que puedan reintentar las llamadas de forma nointrusiva.

Si, después de que se muestre un cuadro de diálogo, el usuario decide cancelar, RetryRejectedCall devuelve -1 y la llamada aparecerá como error con RPC_E_CALL_REJECTED.

Si un cliente implementa IMessageFilter y llama a un método de servidor en un equipo remoto, no se llamará a RetryRejectedCall .

Nota Aunque el parámetro htaskCallee se escribe como HTASK, contiene el identificador de subproceso del subproceso llamado subproceso. Al implementar la interfaz IMessageFilter , puede llamar a la función OpenThread para obtener el identificador de subproceso del parámetro htaskCallee y puede llamar a la función GetProcessIdOfThread para obtener el identificador del proceso.
 

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado objidl.h

Consulte también

IMessageFilter