Niedawno odziedziczyłem duży projekt w języku C#, który wykorzystuje ArcGIS do renderowania niektórych planów powierzchni. Osoby używające go nadal skarżyły się na wyjątkowo słabą wydajność narzędzia i moim zadaniem jest teraz przyspieszyć jego działanie.Interfejs API ArcGIS Desktop - sprawdź, czy renderowanie zostało zakończone.
Kiedy po raz pierwszy spojrzałem na kod, byłem przerażony. To było pełne 30-60 snu System.Threading.Sleep(30000);
po każdym wywołaniu gis api, co powodowało, że proste czynności wymagały minut.
Po kilku testach okazało się, że usunięcie ich spowodowało, że szkice są niekompletne lub pełne artefaktów, ponieważ scena nie została w pełni wyrenderowana przed wykonaniem następnych czynności.
Moje pytanie jest proste. Czy istnieje sposób na wyrenderowanie bieżącego stanu usługi ArcGIS, więc zamiast czekać na "domyślne" 30s, mogę zatrzymać narzędzie tylko do momentu, gdy ArcGis uzna bieżący widok za gotowy?
Dziękuję
Edit: Przykładowy kod
doc.ActiveView = (IActiveView)doc.PageLayout;
doc.ActiveView.ContentsChanged();
System.Threading.Thread.Sleep(5000);
doc.PageLayout.ZoomToWhole();
System.Threading.Thread.Sleep(30000);
mogę dostarczyć więcej fragmentów kodu, ale myślę, że pytanie jest bardziej uniwersalne, a nie bezpośrednio związane z moim kodu.
Wygląda na to, że te osoby obsługujące nie uruchamiają większości zdarzeń w moim zgłoszeniu, więc niestety to niewiele pomoże. Będę dawać +1 za wysiłek. Może zostawić to tak, jak jest. Zbyt dużo wysiłku, aby przepisać całe narzędzie, aby obsłużyć te zdarzenia. – ZorleQ
Szkoda, że dzięki za +1. –