Подтвердить что ты не робот

API ArcGIS Desktop - проверьте, завершен ли рендеринг

Недавно я унаследовал большой проект на С#, который использует 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);

Я могу предоставить больше фрагментов кода, но я думаю, что вопрос более общий, а не напрямую связанный с моим кодом.

4b9b3361

Ответ 1

Я быстро просмотрел документацию и нашел следующее:

Похоже, они полезны, особенно события "AfterDraw". Я бы предположил, что вы можете прослушивать соответствующие события, чтобы включить/отключить инструмент по мере необходимости.