从新线程调用时发生COM 0x8001010E错误
COM 0x8001010E error when invoking from a new thread
我有一个c++DLL,它使用IDispatch接口调用第三方DLL上的方法。如果我从原始线程调用这些方法,但如果在抛出0x800101E错误后启动一个新线程(而不是调用CoCreateInstance的线程)来调用该方法,那么它就会工作。我还在第二个线程上尝试了CoInitialize,但没有成功。
错误0x8001010E为RPC_E_WRONG_THREAD
"应用程序调用了一个为不同线程整理的接口。".
您违反了COM单元规则,并且试图在不属于该指针有效单元的线程上使用接口指针。若要将接口指针传递到另一个单元,请使用封送处理。
请参阅什么是COM封送处理以及如何使用它?和CoMarshalInterThreadInterfaceInStream函数,以及这一理解COM单线程单元。
相关文章:
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 两个 COM 组件中 ENUM 的重复条目
- COM 接口 c# 封送数组数组
- COM :是否可以查看是否存在对我的某个 COM 对象的进程外引用?我可以释放它吗?
- 如何读取 C++ SAFEARRAY**,该 SAFEARRAY** 是 COM 互操作的结果,其中 C# 返回值为
- 进程外 EXE 的免注册 COM
- 使用 Outlook 2016 Microsoft Store 连接到 Outlook COM
- 如何从COM模块中的函数返回字符串数组?
- 如何在C++非托管/本机 DLL 中从注册免费 COM C# 托管 DLL 创建 COM 对象
- Windows (COM) API 的行为不同,没有特定的库
- 我是否可以使用 win32 句柄以编程方式记录发送到/接收到 USB/COM 的内容
- 在传递 com 变体时运行 excel 宏崩溃
- 从 WinRT C++组件访问 COM 对象
- c++ com 如何继承 IUIAutomationPropertyChangedEventHandler 接口
- 如何将从控制台应用程序C++回调设置为C++ COM DLL
- 使用线程 C# 中的 VC++ 6.0 COM DLL
- 问题: 从 MFC 调用 C# 未托管 COM C++
- 如何调试 COM DLL
- 通过 COM 对象连接 x64 应用程序时出现问题
- 从新线程调用时发生COM 0x8001010E错误