在程序的主线程里引入了一个外部COM组件,现在需要在新创建的线程使用这个COM的接口,该怎么使用,CoMarshalInterThreadInterfaceInStream可以吗?怎么用?望指点~

解决方案 »

  1.   

    一个线程想要访问与其隶属于不同 Apartment 中的 COM 对象时,必须通过跨 Apartment 访问机制完成,这需要 COM 库的介入,并使用 Marshalling 技术。具体做法是:在主线程中使用 CoMarshalInterThreadInterfaceInStream 来创建 IStream 接口并传递给后台线程,在后台线程中使用 CoGetInterfaceAndReleaseStream 从IStream 接口重新获取 COM 接口指针,然后使用它。