2008-09-17 8 views
0

J'ai un contrôle ActiveX écrit en utilisant la bibliothèque MS ATL et je déclenche des événements via pDispatch->Invoke(..., DISPATCH_METHOD). Le contrôle sera utilisé par un client .NET et ma question est la suivante: le déclenchement de l'événement est-il un appel synchrone ou asynchrone? Mon problème est que, si elle est synchrone, l'application qui gère l'événement pourrait causer des problèmes de performances, à moins qu'elle ne revienne immédiatement.Lancement d'événements COM en C++ - Synchrone ou asynchrone?

Répondre

4

Il est synchrone du point de vue du composant générant l'événement. Le thread d'exécution du contrôle va appeler dans le code des récepteurs et les choses sont hors de son contrôle à ce moment-là.

Les clients recevant les événements doivent s'assurer qu'ils reviennent rapidement. S'ils ont besoin de faire beaucoup de travail, ils devraient planifier cela de manière asynchrone. Par exemple en publiant un message Windows ou en utilisant un thread séparé.

Questions connexes