我最近继承了一个 C# 中的大型项目,它使用 ArcGIS 来渲染一些区域平面图。目前使用它的人一直在抱怨该工具的性能极差,我现在的任务是让它更快。
当我第一次看代码时,我很害怕。每次调用 gis api 后,它充满了 30-60 秒的睡眠System.Threading.Sleep(30000);
,导致简单的操作需要几分钟。
经过一些测试后,很明显移除它们会导致草图不完整或充满伪影,这仅仅是因为在执行下一个动作之前场景尚未完全渲染。
我的问题很简单。有没有办法获得渲染的 ArcGIS 的当前状态,所以我可以停止该工具,而不是等待“默认”30 秒,直到 ArcGis 将当前视图标记为准备好?
谢谢
编辑:示例代码
doc.ActiveView = (IActiveView)doc.PageLayout;
doc.ActiveView.ContentsChanged();
System.Threading.Thread.Sleep(5000);
doc.PageLayout.ZoomToWhole();
System.Threading.Thread.Sleep(30000);
我可以提供更多代码片段,但我认为这个问题更通用,与我的代码没有直接关系。