GIS~沧海浮沉

导航

“尝试读取或写入受保护的内存”错误处理

 

 

" 未处理 System.AccessViolationException
Message="尝试读取或写入受保护的内存。这通常指示其他内存已损坏。"
不可预料出现问题的时间.

 

       最近程序运行经常的出现这个问题,这种错误是时不时就出现的,无法跟踪。猜到可能是资源没有及时释放,网上搜索果然如此:

        没有强制的释放方法,底层的com组件根据你进程调用组件的次数来控制对象的增加和释放(对象释放会延迟,com自身的问题)。一般是调用强制垃圾回收或ao自带的回收对象的方法,效果不明显。
这种对象不释放的情况,通常出现在应用程序反复调用频率极高的情况下,调用间隔的时间小于对象回收的速度,将报这种错误。通常是自己的程序写的机构不合理,才会产生这种情况。

       解决方法是自己在程序里强制释放COM资源,调用Marshal.ReleaseComObject()方法将不再使用的对象释放掉。具体可参见释放COM资源篇:
http://hi.baidu.com/murphy1314/blog/item/a61bf0996e12850d6e068c3d.html

posted on 2009-08-21 11:23  GIS_Zhou  阅读(5246)  评论(0编辑  收藏  举报