因为需要,我需要做一个控件OWCChart,而这个控件里添加了OWC11这个COM组件.
当我在其它应用程序中,使用这个控件时,出现"COM对象与其基础RCW分开后就不能再使用"这个问题!
如果将这个控件直接拖到FORM上,不做任何调整是没有问题的,但是,当我调整这个控件的一些属性,比如location,width等属性时就会出现这个错误!
望高手指点,分不够可再加!
当我在其它应用程序中,使用这个控件时,出现"COM对象与其基础RCW分开后就不能再使用"这个问题!
如果将这个控件直接拖到FORM上,不做任何调整是没有问题的,但是,当我调整这个控件的一些属性,比如location,width等属性时就会出现这个错误!
望高手指点,分不够可再加!
解决方案 »
- C与C#之间有什么基础上的区别
- 引用 Microsoft.Office.Interop.Excel 出错
- ListView点击排序的问题
- 想反编译一个软件,把其中的图标logo替换一下。
- 关于picuturebox打印问题
- 关于try catch的问题
- 怎么样把byte[]的字节数组转换成String?
- 新手的困惑:.net 技术究竟是指什么?C#?VB.NET? VC.NET? OR ASP.NET?
- 请问在Grid中设readonly为true,但是我想在DataGridTextBoxColumn的TextBox得到焦点的时候对TextBox进行输入,请问怎样可以实现呀
- 请问:如何定义一个定长的字符串数组?
- C#如何打开另一个新窗口的同时关闭自身窗口?
- 如何修改XML文件的值!??
我在当前的调用退出时运行了ReleaseComObj(),之后再运行此调用时出现你所说的错误。
我的解决方法:
ReleaseComObj函数如下:
private void ReleaseComObj()
{
if (mLayerToDisplay != null)
Marshal.ReleaseComObject(mLayerToDisplay);
}如果在程序中调用其他子程序时用到本程序中的变量,例如用到了一个“层”,那么在子程序中就不要释放这个“层”,只释放“目标”就可以了。
例如:Marshal.ReleaseComObject(Layers);
虽然子程序中用到“Layers”,但在上一层调用或其他调用中也用到此“Layers”,所以释放后出现错误。
不知对你是否有帮助。
总之:都不用时才能释放全局变量。