COM 对象与其基础 RCW 分开后就不能再使用

时间:2022-09-29 12:55:07
用户代码未处理 System.Runtime.InteropServices.InvalidComObjectException
  Message=COM 对象与其基础 RCW 分开后就不能再使用。
  Source=mscorlib
  StackTrace:
       在 System.StubHelpers.StubHelpers.StubRegisterRCW(Object pThis, IntPtr pThread)
       在 DSOFramer._FramerControl.Close()
       在 AxDSOFramer.AxFramerControl.Close()
       在 PrintTest.DetailsPrintFrm.PrintDetails(String KeyValue) 位置 D:\Projects\Projects\PrintTest\PrintTest\DetailsPrintFrm.cs:行号 68
       在 PrintTest.WebFrm.printDetails(String OrderID, String TableView) 位置 D:\Projects\Projects\PrintTest\PrintTest\WebFrm.cs:行号 40
  InnerException: 

12 个解决方案

#1


查了好多都没找到正确答案,求解决~~~~~~~~~~~~~ COM 对象与其基础 RCW 分开后就不能再使用

#2


该回复于2011-12-23 09:24:18被版主删除

#3


该回复于2011-12-23 09:24:18被版主删除

#4


先反注册,再重新注册一下试试

#5


C#版没人了吗  帮忙的都没有了  还是不会啊。。。。。。。。。。。  

#6


CSDN没人气了,而且问题确实挺难的

#7


COM 对象与其基础 RCW 分开后就不能再使用

#8


应该是窗体关闭后又再次请求窗体内的事件造成的,重新打开一个窗体对象试一下

#9


引用 8 楼 zzk2010 的回复:
应该是窗体关闭后又再次请求窗体内的事件造成的,重新打开一个窗体对象试一下



的确可以了  结贴

#10


dssdafsafd 

#11


引用 8 楼  的回复:
应该是窗体关闭后又再次请求窗体内的事件造成的,重新打开一个窗体对象试一下


异常信息都已经说清楚了,对象不能再使用了,你重新打开一个窗体,其实已经创建了一个新的对象,能用也不是原来那个对象了,或许很多信息或数据就已经丢失了,哥哥,回复不是动动脚趾头就行的,坑人啊。

#12


在C#中调用C++写的ActiveX控件步骤:
1.用.net自带的工具AxImp.exe把YY.ocx控件包装成.net能够识别的托管控件,会生成YY.dll和AxYY.dll
2.在C#程序里面引用YY.dll和AxYY.dll两个dll
3.
AxYY yy=new AxYY();
yy.BeginInit();     //初始化控件
yy.CreateControl(); //强制创建控件  
/* 使用控件*/
yy.EndInit();       //结束
yy.Dispose();       //释放资源  

#1


查了好多都没找到正确答案,求解决~~~~~~~~~~~~~ COM 对象与其基础 RCW 分开后就不能再使用

#2


该回复于2011-12-23 09:24:18被版主删除

#3


该回复于2011-12-23 09:24:18被版主删除

#4


先反注册,再重新注册一下试试

#5


C#版没人了吗  帮忙的都没有了  还是不会啊。。。。。。。。。。。  

#6


CSDN没人气了,而且问题确实挺难的

#7


COM 对象与其基础 RCW 分开后就不能再使用

#8


应该是窗体关闭后又再次请求窗体内的事件造成的,重新打开一个窗体对象试一下

#9


引用 8 楼 zzk2010 的回复:
应该是窗体关闭后又再次请求窗体内的事件造成的,重新打开一个窗体对象试一下



的确可以了  结贴

#10


dssdafsafd 

#11


引用 8 楼  的回复:
应该是窗体关闭后又再次请求窗体内的事件造成的,重新打开一个窗体对象试一下


异常信息都已经说清楚了,对象不能再使用了,你重新打开一个窗体,其实已经创建了一个新的对象,能用也不是原来那个对象了,或许很多信息或数据就已经丢失了,哥哥,回复不是动动脚趾头就行的,坑人啊。

#12


在C#中调用C++写的ActiveX控件步骤:
1.用.net自带的工具AxImp.exe把YY.ocx控件包装成.net能够识别的托管控件,会生成YY.dll和AxYY.dll
2.在C#程序里面引用YY.dll和AxYY.dll两个dll
3.
AxYY yy=new AxYY();
yy.BeginInit();     //初始化控件
yy.CreateControl(); //强制创建控件  
/* 使用控件*/
yy.EndInit();       //结束
yy.Dispose();       //释放资源