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”事件.我想象你可以听取相关的事件,根据需要启用/禁用你的工具.

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...