在定制ArcEngine数据编辑程序时,经常使用IEngineEditor 接口来完成开始、保存和停止编辑。但我遇到了一个问题,测试纠结了两天终于解决,我十分佩服自己。嘻嘻。
错误描述
使用IEngineEditor开启编辑后, 只要一刷新地图就会报如下错误:
System.AccessViolationException
HResult=0x80004003
Message=尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
Source=<无法计算异常源>
StackTrace:
<无法计算异常堆栈跟踪>
问题分析
很显然,0x80004003是指无效指针 ,这个错误try/catch捕捉不到,直接就崩了:
从系统事件中可以看到如下信息,从此并没看到有用的信息。
换个数据测试还是如此问题。
问题解决
将以前测试无误的代码来操作现在的数据,没有问题!经过一番测试,发现问题在于IEngineEditor必须定义为全局变量。在开启编辑后,刷新地图时估计也要访问它!