调用 RevokeDragDrop 后"OLE The application called an interface that was marshalled for a different thre



我仍在努力找出这个问题的答案。我希望朝着正确的方向推动(因为我在 OLE 方面的经验很少)。有人在调用 RevokDragDrop 后遇到类似的错误吗?

谢谢

您将封送接口传递到另一个单元。尝试调用方法揭示了这一点,并且调用中止并因此错误而中止RPC_E_WRONG_THREAD

在多个线程上使用接口指针时应小心。如果您打算使用已经从其他线程持有的指针,则必须考虑是否允许您这样做,或者您需要显式封送/取消封送指针以进行此类使用,例如使用CoMarshalInterThreadInterfaceInStream函数。

我想问题的根源是GetProp/SetProp使用的API。这些存储原始指针,因为它们在途中无需封送。

相关内容

最新更新