Frage

auf DISPID_DOCUMENTCOMPLETE, wenn ich einen Onclick-Handler für ein bestimmtes Element im DOM von einem Worker-Thread bin Befestigung, dann wird das Ereignis nicht gefeuert zu werden, während es zu klicken, was der Grund sein könnte? Dies funktioniert gut, wenn ich Event-Handler aus dem Haupt-Thread bin Befestigung, aber ich will die Dinge asynchron tun.

I CoMarshalInterThreadInterfaceInStream und CoGetInterfaceAndReleaseStream bin mit IID_IWebBrowser2 Zeiger zwischen Threads zu übergeben.

War es hilfreich?

Lösung

Was ist Ihr Arbeitsthread zu tun, und was ist das Threading-Modell der Ereignishandler? Wenn das Threading-Modell STA ist, dann muss der Worker-Thread, um entweder in regelmäßigen Abständen Nachrichten pumpen, oder wenn es für die Synchronisation wartet dann soll es die CoWaitFor... Funktionen verwenden, um sicherzustellen, dass COM-Nachrichten verarbeitet werden. Alternativ können Sie das freie Gewinde Einweiser aggregieren, aber stellen Sie sicher, dass Ihr Objekt Thread sicher ist, und ruft nicht zu anderen COM-Schnittstellen, die Sie ein Threading-Modellfehler geben könnte, wenn Sie dies tun.

Wahrscheinlich ist die Web-Browser-Steuerung nicht mit der MTA-kompatibel, so dass Sie es nicht an diesem Ort sein können. In jedem Fall ist der MTA mit einer Benutzeroberfläche Thread nicht kompatibel, so dass die Regeln aus.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top