在调用RevokeDragDrop之后,“OLE应用程序调用了为不同线程编组的接口”是什么意思?

时间:2012-05-23 13:45:02

标签: c++ com ole

我仍在努力找出this question的答案。我希望能在正确的方向上轻推(因为我在OLE方面经验很少)。在调用RevokDragDrop之后有没有人遇到过类似的错误?

感谢,

1 个答案:

答案 0 :(得分:1)

您将已封送的界面传递到另一个公寓。尝试调用方法会显示此信息并且调用因此错误RPC_E_WRONG_THREAD而中止。

您应该小心在多个线程上使用接口指针。如果你打算使用一个你已经从另一个线程持有的指针,你必须考虑一下你是否被允许,或者你需要明确地编组/解组指针以供这样使用,例如: CoMarshalInterThreadInterfaceInStream功能。

我认为问题的根源是使用GetProp / SetProp API。那些存储原始指针,因为它们在路上没有必要的编组。