当我在其它应用程序中,使用这个控件时,出现"COM对象与其基础RCW分开后就不能再使用"这个问题!
如果将这个控件直接拖到FORM上,不做任何调整是没有问题的,但是,当我调整这个控件的一些属性,比如location,width等属性时就会出现这个错误!
望高手指点,分不够可再加!
7 个解决方案
#1
怎么没人回答呢?
#2
分不够可以再加的
#3
来人回贴,好送分!
#4
其他工程中重新添加控件试试
#5
我也遇到同样的问题,我是这样解决的,但愿能对你有所帮助。
我在当前的调用退出时运行了ReleaseComObj(),之后再运行此调用时出现你所说的错误。
我的解决方法:
ReleaseComObj函数如下:
private void ReleaseComObj()
{
if (mLayerToDisplay != null)
Marshal.ReleaseComObject(mLayerToDisplay);
}
如果在程序中调用其他子程序时用到本程序中的变量,例如用到了一个“层”,那么在子程序中就不要释放这个“层”,只释放“目标”就可以了。
例如:
Marshal.ReleaseComObject(Layers);
虽然子程序中用到“Layers”,但在上一层调用或其他调用中也用到此“Layers”,所以释放后出现错误。
不知对你是否有帮助。
总之:都不用时才能释放全局变量。
我在当前的调用退出时运行了ReleaseComObj(),之后再运行此调用时出现你所说的错误。
我的解决方法:
ReleaseComObj函数如下:
private void ReleaseComObj()
{
if (mLayerToDisplay != null)
Marshal.ReleaseComObject(mLayerToDisplay);
}
如果在程序中调用其他子程序时用到本程序中的变量,例如用到了一个“层”,那么在子程序中就不要释放这个“层”,只释放“目标”就可以了。
例如:
Marshal.ReleaseComObject(Layers);
虽然子程序中用到“Layers”,但在上一层调用或其他调用中也用到此“Layers”,所以释放后出现错误。
不知对你是否有帮助。
总之:都不用时才能释放全局变量。
#6
location属性设置为“false”.
#7
我将location属性设置为“TRUE”,也没有问题啊!
#1
怎么没人回答呢?
#2
分不够可以再加的
#3
来人回贴,好送分!
#4
其他工程中重新添加控件试试
#5
我也遇到同样的问题,我是这样解决的,但愿能对你有所帮助。
我在当前的调用退出时运行了ReleaseComObj(),之后再运行此调用时出现你所说的错误。
我的解决方法:
ReleaseComObj函数如下:
private void ReleaseComObj()
{
if (mLayerToDisplay != null)
Marshal.ReleaseComObject(mLayerToDisplay);
}
如果在程序中调用其他子程序时用到本程序中的变量,例如用到了一个“层”,那么在子程序中就不要释放这个“层”,只释放“目标”就可以了。
例如:
Marshal.ReleaseComObject(Layers);
虽然子程序中用到“Layers”,但在上一层调用或其他调用中也用到此“Layers”,所以释放后出现错误。
不知对你是否有帮助。
总之:都不用时才能释放全局变量。
我在当前的调用退出时运行了ReleaseComObj(),之后再运行此调用时出现你所说的错误。
我的解决方法:
ReleaseComObj函数如下:
private void ReleaseComObj()
{
if (mLayerToDisplay != null)
Marshal.ReleaseComObject(mLayerToDisplay);
}
如果在程序中调用其他子程序时用到本程序中的变量,例如用到了一个“层”,那么在子程序中就不要释放这个“层”,只释放“目标”就可以了。
例如:
Marshal.ReleaseComObject(Layers);
虽然子程序中用到“Layers”,但在上一层调用或其他调用中也用到此“Layers”,所以释放后出现错误。
不知对你是否有帮助。
总之:都不用时才能释放全局变量。
#6
location属性设置为“false”.
#7
我将location属性设置为“TRUE”,也没有问题啊!