2013-02-22 15 views
10

Ich habe kürzlich ein großes Projekt in C# geerbt, das einige Flächenpläne mit ArcGIS rendert. Die Leute, die es benutzen, beschweren sich über eine extrem schlechte Leistung des Tools und es ist jetzt meine Aufgabe, es schneller zu machen.ArcGIS Desktop API - Überprüfen Sie, ob das Rendern beendet wurde

Als ich zum ersten Mal auf den Code schaute, war ich erschrocken. Es war voll von 30-60s schläft System.Threading.Sleep(30000); nach jedem Anruf nach Gis Api verursacht einfache Aktionen Minuten dauern.

Nach ein paar Tests wurde klar, dass das Entfernen von ihnen dazu führte, dass Skizzen inkomplett oder voller Artefakte waren, einfach weil die Szene vor den nächsten Aktionen nicht vollständig gerendert wurde.

Meine Frage ist einfach. Gibt es eine Möglichkeit, den aktuellen Status von ArcGIS zu erhalten? Anstatt also auf die Standard 30s zu warten, kann ich das Tool nur stoppen, bis ArcGis die aktuelle Ansicht als bereit markiert?

Danke

Edit: Beispielcode

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

ich mehr Code-Fragmente zur Verfügung stellen kann, aber ich denke, die Frage mehr generisch ist, und nicht direkt mein-Code verwendet.

Antwort

1

Ich habe einen kurzen Blick um die Dokumentation hatte und fanden die folgende:

  1. IPageLayoutControlEvents
  2. IActiveViewEvents

Es sieht aus wie sie nützlich sein, vor allem die "AfterDraw" Veranstaltungen. Ich könnte mir vorstellen, dass Sie sich die relevanten Ereignisse anhören können, um Ihr Tool nach Bedarf zu aktivieren/deaktivieren.

+0

Scheint so, dass diese Handler nicht auf die meisten Ereignisse in meiner Anwendung feuern, also wird das leider nicht viel helfen. Ich werde +1 für die Mühe geben. Vielleicht muss es so bleiben, wie es ist. Zu viel Aufwand, um das gesamte Tool neu zu schreiben, um diese Ereignisse zu verarbeiten. – ZorleQ

+0

Schade, danke für die +1 obwohl. –

Verwandte Themen