Frage

Ich habe einige Schwierigkeiten bei der Integration MS MapPoint 2009 in meine WinForms .NET 2.0-Anwendung in C #. Ich habe das ActiveX MapPoint-Steuerelement auf einem Formular hinzugefügt und haben keine Probleme bekommen es eine Karten und Standorte anzuzeigen; Mein Anliegen ist die Zeit es braucht, um eine Karte zu laden, sobald sie erstellt wird.

Die Tests auf meiner Entwicklungsmaschine haben die durchschnittliche Ladezeit gezeigt zwischen 3 und 5 Sekunden sein, bei denen die Anwendung vollständig gesperrt ist. Dies ist zwar nicht völlig inakzeptabel ist, dann ist es eine schrecklich lange Zeit die Kontrolle über die Anwendung zu verlieren. Auch, weil der GUI-Thread gesperrt ist, kann ich nicht einen Laden Dialog oder etwas zeigt die Ladezeit zu maskieren.

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

axMappointControl1.NewMap(MapPoint.GeoMapRegion.geoMapNorthAmerica);

Ich habe versucht, die NewMap Methode auf einem anderen Thread ausgeführt wird, aber der GUI-Thread endet immer noch blockiert wird.

Meine Fragen sind:

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

Jede Hilfe wird sehr geschätzt.

War es hilfreich?

Lösung

Nach diese Fäden bei mapforums.com die Langsamkeit von ActiveX Start ist gut und unvermeidbare bekannt (obwohl die Frage des Durchzugs mit GUI Ansprechbarkeit zu helfen, noch offen ist.

Eine Sache vorgeschlagen wurde stattdessen die ActiveX-Version für das MapPoint.Application Objekt zu verlassen.

Ich hoffe, das hilft.

Andere Tipps

Ja, die Anwendungsversion läuft auf einem eigenen Thread - so sollte dies eine schnellere Alternative sein - leichter Ihre eigenen Sachen zu tun, während es Anfahren wird. Allerdings MapPoint 2010 neigt ein paar Sekunden dauern bis zu starten, wenn die von einem Benutzer gestartet wird.

würde ich einen temporären GUI-Thread erstellen und diese einen Begrüßungsbildschirm verwenden Anzeige während des Start und / oder tun, um jeden Thread-sichere Initialisierung, die Sie tun müssen.

alle Anrufe an einer MapPoint Instanz (oder ActiveX-Kontrolle) aus dem gleichen Faden sein muss, dass das Steuer- oder MapPoint Anwendungsobjekt erstellen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top