2008-09-12 11 views
3

Ich habe einige Probleme bei der Integration von MS MapPoint 2009 in meine WinForms. Net 2.0-Anwendung in C#. Ich habe das ActiveX MapPoint-Steuerelement zu einem Formular hinzugefügt und erhalte keine Probleme damit, Maps und Speicherorte anzuzeigen. Mein Anliegen ist die Zeit, die benötigt wird, um eine Karte zu laden, sobald sie erstellt wurde.MapPoint 2009 Load Performance

Die Tests auf meiner Entwicklungsmaschine haben gezeigt, dass die durchschnittliche Ladezeit zwischen 3 und 5 Sekunden liegt, während der die Anwendung vollständig gesperrt ist. Obwohl dies nicht völlig inakzeptabel ist, ist es eine sehr lange Zeit, die Kontrolle über die Anwendung zu verlieren. Da der GUI-Thread gesperrt ist, kann ich auch keinen Ladedialog oder etwas anzeigen, um die Ladezeit zu maskieren.

Die Linie, die dies hängt: (wobei axMappointControl1 ist die MapPoint Kontrolle)

axMappointControl1.NewMap(MapPoint.GeoMapRegion.geoMapNorthAmerica); 

I auf einem anderen Thread die NewMap Methode versucht haben, aber die Ausführung von GUI Fadenenden noch blockiert werden.

Meine Fragen sind:

  • Was kann ich tun, MapPoint zu beschleunigen, wenn es geladen wird?
  • Gibt es eine Möglichkeit, MapPoint zu laden, damit es den GUI-Thread nicht blockiert?

Jede Hilfe wird sehr geschätzt.

Antwort

5

Nach thesethreads bei mapforums.com die Langsamkeit von ActiveX-Startup ist gut bekannt und unvermeidlich (obwohl die Frage des Durchzugs mit GUI Ansprechbarkeit zu helfen, ist noch offen.

Eine Sache vorgeschlagen war, die ActiveX-Version aufgeben stattdessen zugunsten des MapPoint.Application Objekt

Hoffnung, die hilft

1

Ja die Anwendungsversion auf einem eigenen Thread läuft -.. so sollte dies eine schnellere Alternative sein - leichter Ihre eigenen Sachen zu tun, während sie beginnen aber MapPoint 2010 dauert ein paar Sekunden, um von einem Benutzer gestartet zu werden.

Ich würde einen temporären GUI-Thread erstellen und damit während des Startvorgangs einen Begrüßungsbildschirm anzeigen und/oder eine thread-sichere Initialisierung ausführen, die Sie durchführen müssen.

Alle Aufrufe einer MapPoint-Instanz (oder eines ActiveX-Steuerelements) müssen von demselben Thread stammen, der das MapPoint-Steuerelement oder -Anwendungsobjekt erstellt.