0

在 DISPID_DOCUMENTCOMPLETE 上,如果我从工作线程为 DOM 中的特定元素附加 onclick 处理程序,那么在单击它时不会触发该事件,可能是什么原因?如果我从主线程附加事件处理程序,这工作正常,但我想异步做事。

我正在使用 CoMarshalInterThreadInterfaceInStream 和 CoGetInterfaceAndReleaseStream 在线程之间传递 IID_IWebBrowser2 指针。

4

1 回答 1

1

你的工作线程在做什么,事件处理程序的线程模型是什么?如果线程模型是 STA,那么工作线程需要周期性地泵送消息,或者如果它正在等待同步,那么它应该使用这些CoWaitFor...函数来确保处理 COM 消息。或者,您可以聚合免费的线程编组器,但要确保您的对象是线程安全的,并且不会调用任何其他 COM 接口,如果这样做可能会给您带来线程模型错误。

可能,Web 浏览器控件与 MTA 不兼容,因此您将无法将其放置在其中。在任何情况下,MTA 都与用户界面线程不兼容,因此排除了这种情况。

于 2009-03-26T10:17:30.270 回答