Question

sur DISPID_DOCUMENTCOMPLETE si je joins un gestionnaire onclick pour un élément particulier dans les DOM d'un thread de travail, l'événement ne reçoit pas tiré en cliquant dessus, ce qui pourrait être la raison? cela fonctionne bien si je joins gestionnaire d'événements du thread principal, mais je veux faire les choses de manière asynchrone.

J'utilise pour passer le pointeur IID_IWebBrowser2 entre les fils CoMarshalInterThreadInterfaceInStream et CoGetInterfaceAndReleaseStream.

Était-ce utile?

La solution

Quelle est votre thread de travail à faire, 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 soit pomper périodiquement des messages, ou si elle est en attente pour la synchronisation, il devrait utiliser les fonctions de CoWaitFor..., pour vous assurer que les messages COM seront traités. Ou bien, vous pouvez agréger les placier thread libre, mais assurez-vous que votre objet est thread-safe, et ne remet pas à d'autres interfaces COM qui pourraient vous donner une erreur de modèle de thread 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 fil d'interface utilisateur, de sorte que les règles cela.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top