繁体   English   中英

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

[英]ArcGIS Desktop API - check if rendering has finished

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

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

经过一些测试后,很明显删除它们会导致草图无法完成或充满瑕疵,原因很简单,因为在执行下一步操作之前场景尚未完全呈现。

我的问题很简单。 有没有办法获得ArcGIS渲染的当前状态,所以我可以停止该工具,直到ArcGis将当前视图标记为准备好,而不是等待'默认'30s?

谢谢

编辑:示例代码

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

我可以提供更多的代码片段,但我认为这个问题更通用,而不是直接与我的代码相关。

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

  1. IPageLayoutControlEvents
  2. IActiveViewEvents

看起来它们很有用,特别是“AfterDraw”事件。 我想你可以根据需要收听相关事件来启用/禁用你的工具。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM