gpt4 book ai didi

windows - IWebBrowser2 和多线程单元?

转载 作者:可可西里 更新时间:2023-11-01 10:29:42 28 4
gpt4 key购买 nike

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

如果我将 COM 单元初始化为单线程,事情看起来不错:

CoInitialize(NULL);

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

CoInitializeEx(NULL, COINIT_MULTITHREADED);

然后它开始到处失败,返回值为:

An outgoing call cannot be made since the application is dispatching an input-synchronous call.

来自对 IWebBrowser2 方法的调用。

有人可以告诉我如何解决这个问题吗?我必须使用多线程单元作为要求。请帮忙!

最佳答案

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

理论上您可以创建一个单独的线程,将其初始化为 STA,在那里创建您的 IWebBrowser2 接口(interface)并使用 CoMarshalInterThreadInterfaceInStream/CoGetInterfaceAndReleaseStream 将其编码到 MTA 线程。然而,这是令人厌恶的繁琐,如果你想保持理智完整地逃脱,我不建议尝试它。

我花了几天时间研究这个确切的问题,然后厌恶地放弃了(碰巧使用了 Chromium Embedded Framework)。

确定您是否真的需要使用 MTA。很可能你没有,你只是在使用 iTunes 时做错了什么。

关于windows - IWebBrowser2 和多线程单元?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3713438/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com