从工作线程调用(编组)单元线程COM接口的ATL示例

从工作线程调用(编组)单元线程COM接口的ATL示例,com,marshalling,atl,bho,apartments,Com,Marshalling,Atl,Bho,Apartments,我正在寻找一个代码示例,该示例演示如何在ATL COM服务器DLL中进行跨线程COM调用。你知道吗 更多详情: 我的组件是一个IE浏览器辅助对象,它需要在后台线程上执行工作。在从IE的主线程调用的一个对象方法中,IE给我一个指向IE DOM()的指针,我将其存储在一个局部成员变量中 现在我想创建一个工作线程,它可以异步调用我刚才存储的COM接口指针上的方法 如果有关系,我的调用将在我从IE获取接口指针的方法返回后发生,因此当我尝试从工作线程调用时,IE(而不是我的代码)将拥有控制权 我的组件和主

我正在寻找一个代码示例,该示例演示如何在ATL COM服务器DLL中进行跨线程COM调用。你知道吗

更多详情:

我的组件是一个IE浏览器辅助对象,它需要在后台线程上执行工作。在从IE的主线程调用的一个对象方法中,IE给我一个指向IE DOM()的指针,我将其存储在一个局部成员变量中

现在我想创建一个工作线程,它可以异步调用我刚才存储的COM接口指针上的方法

如果有关系,我的调用将在我从IE获取接口指针的方法返回后发生,因此当我尝试从工作线程调用时,IE(而不是我的代码)将拥有控制权

我的组件和主机应用程序都是单元线程

谁知道一个好的C++示例,展示了这是如何完成的?
我特别想要一个简短、直接的示例(而不是相关文档的指针),因为我阅读了它的内容和答案,并对从头开始编写实现所需的大量学习感到害怕。任何时候,如果有人建议在编写代码之前阅读Don Box的书,你就知道你将经历一个漫长而混乱的夜晚…:-)

这在COM中是自动的,它负责单元需求,并在接口指针具有STA亲缘关系时封送调用。在线程中使用接口指针之前,必须对其进行封送处理,ATL提供了AtlMarshalPtrInProc()和AtlUnmarshalPtr()辅助方法,使之更容易。CoMarshalInterThreadInterfaceInStream()或IGlobalInterfaceTable,如果您想自己完成