加载项最初是在没有使用 backgroundworker 的情况下编写的,并且运行良好。我能够创建一个 shapefile,它可以在同一个 ArcMap 会话中执行后立即添加和查看。
然后我尝试在 UI 中添加一个进度条,在执行完成之前它没有显示任何更改。那时我添加了一个 backgroundworker 类并将耗时的 shapefile 创建代码(没有任何更改)移动到 backgroundworker 的 dowork 事件处理程序中。
虽然这使 UI 响应更快,但如果我将结果 shapefile 添加到同一个 ArcMap 会话中,屏幕上不会显示任何内容。ArcMap 还报告绘图错误,说“无法获取锁 [表 xxx 正在由另一个进程写入]。
我确信到那时写作已经完成。如果我关闭当前 ArcMap 会话并启动一个新会话,我可以毫无问题地查看结果。
有太多代码要发布,我有一种强烈的感觉,这个问题是由将代码原样移动到 backgroundworker 类引起的。我希望你们在后台工作人员/ArcGIS 插件方面更有经验的人可以给我一些指示,这可能是罪魁祸首。提前致谢!