Compartilhar via


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

Fornece aos aplicativos a oportunidade de exibir uma caixa de diálogo que oferece opções de repetição, cancelamento ou troca de tarefas.

Sintaxe

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

Parâmetros

[in] htaskCallee

A ID do thread do aplicativo chamado.

[in] dwTickCount

O número de tiques decorridos desde que a chamada foi feita.

[in] dwRejectType

Especifica SERVERCALL_REJECTED ou SERVERCALL_RETRYLATER, conforme retornado pelo aplicativo de objeto.

Retornar valor

Esse método pode retornar os valores a seguir.

Valor retornado Descrição
-1
A chamada deve ser cancelada. EM seguida, COM retorna RPC_E_CALL_REJECTED da chamada de método original.
0 ≤ valor< 100
A chamada deve ser repetida imediatamente.
Valor de 100 ≤
O COM aguardará por tantos milissegundos e tentará novamente a chamada.

Comentários

O COM chama RetryRejectedCall na interface IMessageFilter do chamador imediatamente após receber SERVERCALL_RETRYLATER ou SERVERCALL_REJECTED do método IMessageFilter::HandleInComingCall na interface IMessageFilter do receptor.

Se uma tarefa chamada rejeitar uma chamada, o aplicativo provavelmente estará em um estado em que não pode lidar com essas chamadas, possivelmente apenas temporariamente. Quando isso ocorre, COM retorna ao chamador e emite RetryRejectedCall para determinar se ele deve repetir a chamada rejeitada.

Os aplicativos devem repetir silenciosamente as chamadas que retornaram com SERVERCALL_RETRYLATER. Se, após uma quantidade razoável de tempo ter passado, digamos cerca de 30 segundos, o aplicativo deverá exibir a caixa de diálogo ocupada; uma implementação padrão dessa caixa de diálogo está disponível na biblioteca OLEDLG. O receptor pode estar momentaneamente em um estado em que as chamadas podem ser tratadas. A opção de aguardar e tentar novamente é fornecida para tipos especiais de aplicativos de chamada, como tarefas em segundo plano executando macros ou scripts, para que eles possam repetir as chamadas de maneira não intrusiva.

Se, depois que uma caixa de diálogo for exibida, o usuário optar por cancelar, RetryRejectedCall retornará -1 e a chamada parecerá falhar com RPC_E_CALL_REJECTED.

Se um cliente implementar IMessageFilter e chamar um método de servidor em um computador remoto, RetryRejectedCall não será chamado.

Nota Embora o parâmetro htaskCallee seja digitado como um HTASK, ele contém a ID de thread do thread chamado. Ao implementar a interface IMessageFilter , você pode chamar a função OpenThread para obter o identificador de thread do parâmetro htaskCallee e pode chamar a função GetProcessIdOfThread para obter a ID do processo.
 

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho objidl.h

Confira também

Imessagefilter