2009-03-26 5 views
0

sur DISPID_DOCUMENTCOMPLETE si j'attache un gestionnaire onclick pour un élément particulier dans le DOM d'un thread de travail, alors l'événement n'est pas déclenché en cliquant dessus, quelle en est la raison? Cela fonctionne bien si j'attache un gestionnaire d'événements du thread principal, mais je veux faire les choses de manière asynchrone. J'utilise CoMarshalInterThreadInterfaceInStream et CoGetInterfaceAndReleaseStream pour passer le pointeur IID_IWebBrowser2 entre les threads.BHO - Attacher le gestionnaire d'événements du thread de travail

Répondre

1

Que fait votre thread de travail et quel est le modèle de thread du gestionnaire d'événements? Si le modèle de thread est STA, le thread de travail doit périodiquement pomper des messages, ou s'il attend la synchronisation, il doit utiliser les fonctions CoWaitFor... pour s'assurer que les messages COM seront traités. Ou, vous pouvez agréger le marshaller threaded libre, mais assurez-vous que votre objet est thread-safe, et n'appelle pas à d'autres interfaces COM qui pourraient vous donner une erreur de modèle de threading si vous faites cela.

Probablement, le contrôle du navigateur Web n'est pas compatible avec le MTA, donc vous ne serez pas en mesure de le placer dans cela. Dans tous les cas, le MTA n'est pas compatible avec un thread d'interface utilisateur, ce qui exclut cette possibilité.

Questions connexes