質問

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 をロードする方法はありますか?

ご協力をよろしくお願いいたします。

役に立ちましたか?

解決

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

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

それが役立つことを願っています。

他のヒント

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

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top