ArcEngine 报错记录

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013084746/article/details/78777670

关于ArcEngine“不能再打开其他表了”的错误

  
1.从前遇到的这种问题,一般是在pFeatureCursor = pFeatureClass.Search(pSpatialfilter, False)这种语句上,只要把光标释放ESRI.ArcGIS.ADF.ComReleaser.ReleaseCOMObject(pFeatureCursor) 或者System.Runtime.InteropServices.Marshal.ReleaseComObject(featureclass); 就ok了。
今天特别奇怪,在pFeatureClass.GetFeature(pID)这里出现问题,也没有光标啊,于是我把注意力又重新转移回“不能再打开其他表了”的原始提示上分析,问题就是要素类的表被打开太多次了,最终的解决方案,强制一次垃圾回收。
 System.GC.Collect() '强制对所有代进行垃圾回收。
 System.GC.WaitForPendingFinalizers() '挂起当前线程,直到处理终结器队列的线程清空该队列为止。原来系统里有这些代码的,只是以前没有出现错误就把他们伟大的作用忽略了。
2.COM 对象与其基础 RCW 分开后就不能再使用。 RCW是一个.NET和COM之间的桥梁,上述错误就是在于COM那一段的陆地消失了,你再想走着这桥,系统就报错了,
这种问题多半是COM对象被意外销毁或者没有抛出异常就崩溃导致。
解决问题是:肯定是系统对象在运行时某个地方,局部销毁了,在传入时,可用引用对象ref,out


猜你喜欢

转载自blog.csdn.net/u013084746/article/details/78777670
今日推荐