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);
                                            }

结果可以了,应该就如上面所说的那样吧。最终问题解决,记录一下。

 

posted @ 2022-08-10 15:56  lythen  阅读(169)  评论(0编辑  收藏  举报