我写了一个atl COM dll,双。并在C#GUI项目中使用了其中一个intreace X.当调用X.F()时,我得到一个System.InvalidCastException,无法将namespace.XClass强制转换为namespace.IX,QueryInterface失败:BADTYPE。电话是我自己的主题。
如果我将代码移动到GUI线程,它就可以正常工作。
请帮助我。非常感谢。
答案 0 :(得分:2)
COM对象通常是STA,这意味着它们只能由创建它们的线程使用
答案 1 :(得分:2)
COM需要代理/存根来封送从线程到创建对象的线程的调用。如果在HKCR \ Interface注册表项中找不到它,QI将失败。