微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – ArcGIS Desktop API – 检查渲染是否完成

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

当我第一次看代码时,我很害怕.充满30-60秒睡觉System.Threading.Sleep(30000);每次调用gis api后,都需要几分钟的时间才能执行简单的操作.

经过一番测试,很明显,删除它们会导致草图不合格或装满文物,只是因为在执行下一步操作之前场景尚未完全渲染.

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

谢谢

编辑:示例代码

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

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

解决方法

我已经快速浏览了这些文档,并找到以下内容

> IPageLayoutControlEvents
> IActiveViewEvents

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

原文地址:https://www.jb51.cc/csharp/95831.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐