AE 尝试读写受保护的内存

 1                //获取两个点的高程
 2                 pRasterSurface.PutRaster(pRasterLayer.Raster, 0);
 3                 ISurface pSurface = pRasterSurface as ISurface;
 4                 point.Z = pSurface.GetElevation(point);
 5                 pt.Z = pSurface.GetElevation(pt);
 6                 //IPolyline pPolyline = AxMapC.TrackLine() as IPolyline;
 7                 IPoint pPoint = null;
 8                 Boolean pBool = true;
 9                 IPolyline pVPolyline = null;
10                 IPolyline pInPolyline = null;
11                 object pRef = 0.13;
12                 pSurface.GetLineOfSight(point, pt, out pPoint, out pVPolyline, out pInPolyline, out pBool, false, false, ref pRef);
13                 //如果pt在pVPolyline上,则可视;否则不可视
14                 return pBool;

调试的时候因为是循环这段函数,所以执行比较长的时间后,在GetElevation这句,会报“尝试读写受保护的内存……”这样的错误。但是单步调试却没有问题。然后从网上查到了一片文章:http://hi.baidu.com/liuzumou/item/1bfca7c3328adf2fef466555http://www.cnblogs.com/GIS_zhou/articles/1551258.html
这种问题通常出现在应用程序反复调用频率极高的情况下。但是按照文章中加了释放资源的代码还是不管用。然后就重启电脑,也不管用。最后那么多数据竟然都单步调试完了。之后,再执行就不出现这个错误了,真是奇怪~

原文地址:https://www.cnblogs.com/xiaominmin54/p/4232304.html