10

私は最近、ArcGIS を使用して一部のエリア プランをレンダリングする C# の大規模プロジェクトを継承しました。現在それを使用している人々は、ツールのパフォーマンスが非常に悪いと不平を言い続けており、それを高速化することが今の私の仕事です。

最初にコードを見たとき、私はぞっとしました。System.Threading.Sleep(30000);gis api を呼び出すたびに 30 ~ 60 秒のスリープが発生し、単純なアクションに数分かかりました。

少しテストした後、それらを削除すると、次のアクションを実行する前にシーンが完全にレンダリングされていないため、スケッチが不完全またはアーティファクトでいっぱいになることが明らかになりました.

私の質問は簡単です。レンダリングされた ArcGIS の現在のステータスを取得する方法はありますか?「デフォルト」の 30 秒を待つ代わりに、ArcGis が現在のビューに準備完了のフラグを立てるまでツールを停止できますか?

ありがとうございました

編集:サンプルコード

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

より多くのコードフラグメントを提供できますが、質問はより一般的であり、コードに直接関連しているとは思いません。

4

1 に答える 1

1

ドキュメントをざっと見たところ、次のことがわかりました。

  1. IPageLayoutControlEvents
  2. IActiveViewEvents

特に「AfterDraw」イベントは便利そうです。関連するイベントをリッスンして、必要に応じてツールを有効/無効にできると思います。

于 2013-06-18T13:17:57.363 に答える