Partager via


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

Permet aux applications d’afficher une boîte de dialogue offrant des options de nouvelle tentative, d’annulation ou de basculement de tâches.

Syntaxe

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

Paramètres

[in] htaskCallee

ID de thread de l’application appelée.

[in] dwTickCount

Nombre de cycles écoulés depuis l’appel.

[in] dwRejectType

Spécifie SERVERCALL_REJECTED ou SERVERCALL_RETRYLATER, tel que retourné par l’application objet.

Valeur retournée

Cette méthode peut retourner les valeurs suivantes.

Valeur retournée Description
-1
L’appel doit être annulé. COM retourne ensuite RPC_E_CALL_REJECTED de l’appel de méthode d’origine.
0 ≤ valeur< 100
L’appel doit être retenté immédiatement.
Valeur de 100 ≤
COM attendra ce nombre de millisecondes, puis réessayera l’appel.

Remarques

COM appelle RetryRejectedCall sur l’interface IMessageFilter de l’appelant immédiatement après avoir reçu SERVERCALL_RETRYLATER ou SERVERCALL_REJECTED de la méthode IMessageFilter ::HandleInComingCall sur l’interface IMessageFilter de l’appelé.

Si une tâche appelée rejette un appel, l’application se trouve probablement dans un état où elle ne peut pas gérer ces appels, éventuellement seulement temporairement. Lorsque cela se produit, COM retourne à l’appelant et émet RetryRejectedCall pour déterminer s’il doit réessayer l’appel rejeté.

Les applications doivent réessayer silencieusement les appels retournés avec SERVERCALL_RETRYLATER. Si, après un laps de temps raisonnable, par exemple environ 30 secondes, l’application doit afficher la boîte de dialogue occupée ; une implémentation standard de cette boîte de dialogue est disponible dans la bibliothèque OLEDLG. L’appelé peut se trouver momentanément dans un état où les appels peuvent être gérés. L’option d’attente et de nouvelle tentative est fournie pour les types spéciaux d’applications appelantes, telles que les tâches en arrière-plan exécutant des macros ou des scripts, afin qu’elles puissent réessayer les appels de manière non intrusive.

Si, après l’affichage d’une boîte de dialogue, l’utilisateur choisit d’annuler, RetryRejectedCall retourne -1 et l’appel semble échouer avec RPC_E_CALL_REJECTED.

Si un client implémente IMessageFilter et appelle une méthode serveur sur un ordinateur distant, RetryRejectedCall n’est pas appelé.

Note Bien que le paramètre htaskCallee soit typé en tant que HTASK, il contient l’ID de thread du thread appelé. Lorsque vous implémentez l’interface IMessageFilter , vous pouvez appeler la fonction OpenThread pour obtenir le handle de thread à partir du paramètre htaskCallee , et vous pouvez appeler la fonction GetProcessIdOfThread pour obtenir l’ID de processus.
 

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête objidl.h

Voir aussi

IMessageFilter