ArcGIS Desktop API-检查渲染是否已完成

本文关键字:是否 已完成 检查 Desktop API- ArcGIS | 更新日期: 2023-09-27 18:00:28

我最近继承了C#中的一个大型项目,该项目使用ArcGIS来绘制一些区域平面图。目前使用它的人一直抱怨该工具的性能极差,我现在的任务是让它更快。

当我第一次看到代码时,我吓坏了。每次调用gis api后,它充满了30-60秒的睡眠System.Threading.Sleep(30000);,导致简单的操作需要几分钟的时间。

经过一点测试,很明显,移除它们会导致草图不完美或充满伪影,这只是因为在执行下一步操作之前,场景尚未完全渲染。

我的问题很简单。有没有一种方法可以渲染ArcGIS的当前状态,这样我就可以停止该工具,直到ArcGIS将当前视图标记为就绪,而不是等待"默认"的30秒?

谢谢

编辑:样本代码

doc.ActiveView = (IActiveView)doc.PageLayout;
doc.ActiveView.ContentsChanged();
System.Threading.Thread.Sleep(5000);
doc.PageLayout.ZoomToWhole();    
System.Threading.Thread.Sleep(30000);

我可以提供更多的代码片段,但我认为这个问题更通用,与我的代码没有直接关系。

ArcGIS Desktop API-检查渲染是否已完成

我快速浏览了一下文档,发现了以下内容:

  1. IPageLayoutControlEvents
  2. IActiveViewEvents

看起来它们很有用,尤其是"AfterDraw"活动。我想你可以根据需要收听相关事件来启用/禁用你的工具。