나는 atl COM dll, dual을 작성했습니다. 그리고 C# GUI proj에서 intreace X 중 하나를 사용했습니다. X.F()를 호출하면 System.InvalidCastException이 발생하고 namespace.XClass를 namespace.IX로 캐스팅 할 수 없으며 QueryInterface가 실패했습니다. BADTYPE. 그 전화는 내 실에 있었다.COM 인터페이스를 사용하는 경우 System.InvalidCastException
코드를 GUI 스레드로 옮기면 잘 작동합니다.
도와주세요. 고마워.
Paul 감사합니다. COM 객체를 만든 스레드에서 COM obj를 사용했습니다. 그러나 GUIthread에서 아닙니다. 모든 코드를 새 스레드로 이동하면 작동합니다. – ahpho
엄밀히 말하면 STA 개체는 다른 스레드에서도 사용할 수 있지만 인터페이스 포인터를 마샬링해야합니다. COM이 인터페이스를 마샬링 할 수 없으면 질문에서와 같이 오류 표시가 나타납니다. – sharptooth