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/1bfca7c3328adf2fef466555,http://www.cnblogs.com/GIS_zhou/articles/1551258.html
这种问题通常出现在应用程序反复调用频率极高的情况下。但是按照文章中加了释放资源的代码还是不管用。然后就重启电脑,也不管用。最后那么多数据竟然都单步调试完了。之后,再执行就不出现这个错误了,真是奇怪~
时间: 2024-12-23 13:40:52