IPolyline pPolyline2 = feature2.Shape as IPolyline;
ITopologicalOperator topoOperator = pPolyline2 as ITopologicalOperator;
...
ILine line = lineSegCol.get_Segment(i) as Line;
IGeometry geo = topoOperator.Intersect(line, esriGeometryDimension.esriGeometry0Dimension);
在判断pPolyline2 与line 是否相交时出现“尝试读取或写入受保护的内存。这通常指示其他内存已损坏。”报错。
解决办法:将line转换为polyline
ISegmentCollection gc = new PolylineClass();
gc.AddSegment(line as ISegment);
IPolyline polyline = gc as IPolyline;
IGeometry geo = topoOperator.Intersect(polyline,
esriGeometryDimension.esriGeometry0Dimension);
还有一些情况可能会引起该类错误,如下(整理自空谷幽鹤博客):
错误原因可能是:
(1)最常见的就是共享Map或Layer引起,因为两个Mapcontrol对同一个对象做了不同的操作,所以要对Map或者Layer做深度克隆。
(2)数据库访问达到最大的并发量,出现死锁。
(3)程序设计不合理:这通常是频繁的写