System.Runtime.InteropServices.COMException (0x80041055): 游标已经失效,因为编辑操作已停止。
最近修改一个arc engine工具,主要做一些要素更工作,挺简单,一直都在用也没什么问题。但是最近抽风了,更新现势图层没什么问题,但更新历史图层一直报错,中文就是标题“游标已经失效,因为编辑操作已停止。”,根据这个去查百度或者bing都没有任何相关内容。
原来的代码,其实这个在更新现势的数据的时候,一直都没报过错。
if (iUpdateCount % 2000 == 0) { editWrkSpace.StopEditOperation(); editWrkSpace.StartEditOperation(); }
修改后代码,修改更新现势也没问题,但更新历史图层还是一样报错。
if (iUpdateCount % 2000 == 0) { editWrkSpace.StopEditOperation(); editWrkSpace.StopEditing(true); editWrkSpace.StartEditing(false); editWrkSpace.StartEditOperation(); }
后来查0x80041055,没有什么相关信息,但查到外文原文是 The cursor has been invalidated because the edit operation has stopped,于是继续搜索The cursor has been invalidated because the edit operation has stopped,查到一篇文章InsertRow on Cursor returns error after stopping a... - Esri Community,全英的,认真看了下,有一个人这么说
最后挣扎一下,改成了
if (iUpdateCount % 2000 == 0) { editWrkSpace.StopEditOperation(); editWrkSpace.StopEditing(true); editWrkSpace.StartEditing(false); editWrkSpace.StartEditOperation(); ComReleaser.ReleaseCOMObject(pFeaCur); pFeaCur = null; pFeaCur = pUpdateFeaCls.Update(pUpdateFilter, false); }
结果可以了,应该就如上面所说的那样吧。最终问题解决,记录一下。