10
我最近在C#中繼承了一個大型項目,該項目使用ArcGIS渲染某些區域平面圖。目前使用它的人不斷抱怨該工具的性能極差,現在我的任務是加快速度。ArcGIS Desktop API - 檢查渲染是否完成
當我第一次看代碼時,我很害怕。在每次打電話給gis api之後,它都充滿了30-60s的睡眠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);
我可以提供更多的代碼片段,但我認爲這個問題是比較通用的,而不是直接我的代碼有關。
似乎這些處理程序不會觸發我應用程序中的大多數事件,所以不幸的是這並不會有多大幫助。我會努力+1。可能不得不放棄它。重寫整個工具來處理這些事件花費太多。 – ZorleQ 2013-06-21 14:23:22
可惜這一點,感謝+1雖然。 – 2013-06-24 08:01:02