3

MS MapPoint 2009 を C# の WinForms .Net 2.0 アプリケーションに統合する際に問題が発生しています。ActiveX MapPoint コントロールをフォームに追加しましたが、マップと場所を表示するのに問題はありません。私の懸念は、作成されたマップをロードするのにかかる時間です。

私の開発マシンでのテストでは、アプリケーションが完全にロックされている間、平均ロード時間が 3 ~ 5 秒であることが示されました。これは完全に受け入れられないわけではありませんが、アプリケーションの制御を失うには非常に長い時間がかかります. また、GUI スレッドがロックされているため、読み込みダイアログなどを表示して読み込み時間を隠すことができません。

ハングする行は次のとおりです: (axMappointControl1 は MapPoint コントロールです)

axMappointControl1.NewMap(MapPoint.GeoMapRegion.geoMapNorthAmerica);

別のスレッドで NewMap メソッドを実行しようとしましたが、GUI スレッドがブロックされてしまいます。

私の質問は次のとおりです。

  • MapPoint の読み込みを高速化するにはどうすればよいですか?
  • GUI スレッドをブロックしないように MapPoint をロードする方法はありますか?

どんな助けでも大歓迎です。

4

2 に答える 2

5

mapforums.comのこれらの スレッドによると、ActiveXの起動が遅いことはよく知られており、避けられません(ただし、GUIの応答性を支援するためのスレッド化の問題は未解決です。

提案された1つのことは、代わりにMapPoint.Applicationオブジェクトを優先してActiveXバージョンを放棄することでした。

お役に立てば幸いです。

于 2008-09-18T20:02:26.167 に答える
1

はい、アプリケーション バージョンは独自のスレッドで実行されます。したがって、これはより迅速な代替手段である必要があります。起動中に独自の処理を実行する方が簡単です。ただし、MapPoint 2010 は、ユーザーが起動すると、起動に数秒かかる傾向があります。

一時的な GUI スレッドを作成し、これを使用して起動時にスプラッシュ スクリーンを表示したり、必要なスレッドセーフな初期化を実行したりします。

MapPoint インスタンス (または ActiveX コントロール) へのすべての呼び出しは、MapPoint コントロールまたはアプリケーション オブジェクトを作成する同じスレッドから行う必要があります。

于 2011-01-04T14:54:12.880 に答える