首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IWebBrowser2和多线程公寓?

IWebBrowser2和多线程公寓?
EN

Stack Overflow用户
提问于 2010-09-14 22:41:22
回答 2查看 1.4K关注 0票数 2

我正在开发一个嵌入WebBrowser控件(IWebBrowser2)的Windows应用程序。

如果我将COM单元初始化为单线程,情况会很好:

代码语言:javascript
复制
CoInitialize(NULL);

但是,如果我将其更改为多线程:

代码语言:javascript
复制
CoInitializeEx(NULL, COINIT_MULTITHREADED);

然后,它开始在所有地方失败,返回值为:

由于应用程序正在发送输入同步呼叫,所以无法发出传出呼叫.

调用IWebBrowser2方法。

谁能告诉我怎么解决这个问题吗?我必须使用多线程公寓作为一项要求。请帮帮我!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-10-19 11:40:41

无法在多线程单元中初始化可视化activex控件。

理论上,您可以创建一个单独的线程,将其初始化为STA,在那里创建您的IWebBrowser2接口,并使用CoMarshalInterThreadInterfaceInStream / CoGetInterfaceAndReleaseStream将其封送到MTA线程。然而,这是令人厌恶的微妙和我不建议尝试,如果你想逃脱与你的理智完好无损。

我花了几天的时间来研究这个确切的问题,并且厌恶地放弃了(并且用代替了它)。

找出你是否真的需要使用MTA。很可能你没有,你只是做错了iTunes。

票数 3
EN

Stack Overflow用户

发布于 2012-12-25 02:57:25

我花了整整一周时间尝试这些STAMTA,并告诉up.Instead有一个更简单的approach.Use系统(“call iexplore.exe http://www.example.com");button_click method.This works beatifully.Only中的方法是在一个单独的标签上创建web浏览器。我认为这些复杂的或有意(或愚蠢的)由微软的研究人员创造的,所以我们总是在我们编码的每一种方法上都绕圈,记住微软。把Kvinvisible家伙

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3713438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档