【发布时间】:2013-02-08 03:31:50
【问题描述】:
我最近继承了一个 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);
我可以提供更多代码片段,但我认为这个问题更笼统,与我的代码没有直接关系。
【问题讨论】: