使用COM接口时System.InvalidCastException

时间:2010-01-05 03:24:34

标签: c# com

我写了一个atl COM dll,双。并在C#GUI项目中使用了其中一个intreace X.当调用X.F()时,我得到一个System.InvalidCastException,无法将namespace.XClass强制转换为namespace.IX,QueryInterface失败:BADTYPE。电话是我自己的主题。

如果我将代码移动到GUI线程,它就可以正常工作。

请帮助我。非常感谢。

2 个答案:

答案 0 :(得分:2)

COM对象通常是STA,这意味着它们只能由创建它们的线程使用

答案 1 :(得分:2)

COM需要代理/存根来封送从线程到创建对象的线程的调用。如果在HKCR \ Interface注册表项中找不到它,QI将失败。