0

我有一个带有 ATL 简单对象的进程外 COM 服务器,它创建另一个线程。新线程将需要调用 ATL Simple 对象。由于 ATL 简单对象和新线程创建的单元不同,因此需要在新线程中编组 ATL 简单对象,否则会产生错误 0x8001010e。

我如何在服务器端编组 COM 对象或者我错过了什么?

非常感谢。

4

3 回答 3

0

如果您熟悉 ATL - 我建议您使用CComGITPtr。它是一个智能指针,可以在全局接口表中发布您的接口,您以后可以从其他公寓访问它们。但是 GIT 就一个过程而言是全球性的。

还有一点——你是否为你的 ATL 简单对象实现了代理存根?如果您不构建代理存根,那么您的 ATL 简单对象应该公开并实现 IDispatch。在它的帮助下,代理将自动创建。

于 2010-03-30T10:19:28.993 回答
0

如果这个答案离你很远,我很抱歉,但我不清楚你想要完成的具体细节。

我认为这是一个设计问题,而不是实现问题。为什么不在新线程中/由新线程创建简单对象?

如果您希望跨线程边界进行通信,我建议使用一种广泛接受的模式(邮箱、事件)来向新线程的调度程序发出信号,以便在下次可用时执行操作。

您能否详细说明问题的具体情况?我很乐意提供帮助,因为这似乎就在我的小巷里......

于 2009-10-13T01:11:59.673 回答
0

看看CoMarshalInterThreadInterfaceInStream。如果你谷歌这个,你会找到一些如何使用它的例子。

希望有帮助。

于 2009-10-14T11:23:06.950 回答