Ho recentemente ereditato un grande progetto in C#, che utilizza ArcGIS per il rendering di alcuni piani di area. Le persone che attualmente lo utilizzano continuano a lamentarsi di prestazioni estremamente scadenti dello strumento ed è mio compito ora renderlo più veloce.API ArcGIS Desktop: verificare se il rendering è terminato
Quando ho visto il codice per la prima volta, ero terrorizzato. Era pieno di 30-60s dorme System.Threading.Sleep(30000);
dopo ogni chiamata a gis api, causando semplici azioni per richiedere minuti.
Dopo un po 'di test, è diventato chiaro che rimuoverli ha causato gli schizzi incompiuti o pieni di artefatti, semplicemente perché la scena non è stata completamente renderizzata prima di eseguire le azioni successive.
La mia domanda è semplice. C'è un modo per ottenere lo stato corrente di ArcGIS renderizzato, quindi, invece di aspettare gli '30' predefiniti, posso fermare lo strumento solo fino a quando ArcGis contrassegna la vista corrente come pronta?
Grazie
Edit: Codice di esempio
doc.ActiveView = (IActiveView)doc.PageLayout;
doc.ActiveView.ContentsChanged();
System.Threading.Thread.Sleep(5000);
doc.PageLayout.ZoomToWhole();
System.Threading.Thread.Sleep(30000);
posso fornire più frammenti di codice, ma penso che la questione è più generico, e non direttamente il mio-codice relativo.
Sembra che questi gestori non attivino la maggior parte degli eventi nella mia applicazione, quindi purtroppo non sarà di grande aiuto. Farò +1 per lo sforzo. Potrebbe lasciarlo così com'è. Troppo sforzo per riscrivere l'intero strumento per gestire tali eventi. – ZorleQ
Peccato per questo, grazie per il +1 però. –