Annulation d’un appel asynchrone
Un client peut annuler un appel asynchrone en cours si l’objet d’appel implémente l’interface ICancelMethodCalls . Pour les objets qui utilisent le marshaling standard, ICancelMethodCalls est toujours disponible pour les appels marshalés. Pour les objets qui utilisent le marshaling personnalisé ou pour les appels à des objets serveur dans le même appartement, cette fonctionnalité n’est disponible que si l’objet d’appel implémente ICancelMethodCalls.
Le client peut annuler l’appel à tout moment, à partir du moment où la méthode Begin_ est appelée jusqu’à ce que la méthode Finish_ retourne. Si le client annule l’appel avant d’appeler la méthode Finish_, il doit appeler la méthode Finish_ pour propre l’état de l’objet d’appel. Tant que le client ne l’a pas fait, tous les appels à une méthode Begin_ sur l’objet d’appel retournent RPC_E_CALL_PENDING.
Pour annuler un appel asynchrone
Interrogez l’objet d’appel pour ICancelMethodCalls.
Appelez ICancelMethodCalls::Cancel, puis appelez Release pour libérer le pointeur obtenu par l’appel QueryInterface à l’étape 1.
Si le client n’a pas déjà appelé la méthode Finish_, appelez-la maintenant.
Il n’existe aucune garantie que le serveur a effectivement arrêté l’exécution de l’appel. Si le travail ultérieur du client dépend d’un état de serveur que l’appel a peut-être modifié ou non, le client doit déterminer cet état avant de continuer.
Rubriques connexes
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour