c#调用C开发的COM组件生成的DLL

c#调用C开发的COM组件生成的DLL,在主线程中正常调用没问题,我用FOR语句多次调用正常如果另开启一个线程就会报错,错误信息如下:未处理System.InvalidC... c#调用C开发的COM组件生成的DLL, 在主线程中正常调用 没问题,我用FOR语句多次调用正常 如果另开启一个线程就会报错,错误信息如下:
未处理 System.InvalidCastException
Message="无法将类型为“OPLoadS.OPGetClass”的 COM 对象强制转换为接口类型“OPLoadS.IOPGet”。此操作失败的原因是对 IID 为“{3356EC38-7543-4E2E-B985-42F2EFB4B7BE}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 不支持此接口 (异常来自 HRESULT:0x80004002 (E_NOINTERFACE))。"
最后我把线程改为TIMER,也是这个错误,我在网上查了多线程调用COM的问题,都没解决,还请高手帮忙
能通过其它办法解决我要实现的功能也可以:在不干扰主线程的情况下,一直运行COM提供的方法,
谢谢
展开
 我来答
mnovp58
推荐于2016-09-07 · TA获得超过173个赞
知道答主
回答量:244
采纳率:100%
帮助的人:183万
展开全部
这些不用你担心,这要你把Com导入进去,然后申明DllImport调用哪个方法。
其他的系统会自动做转换的,就是说C++类型会自己转化成C#类型的。

补充:句柄什么的你可能要用C#的Unsafe代码,比如说窗口的句柄可以这样获取
IntPtr handle = pictureBox.Handle;
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式