2008-09-12 2 views
3

У меня возникли проблемы с интеграцией MS MapPoint 2009 в мое приложение WinForms .Net 2.0 на C#. Я добавил элемент управления ActiveX MapPoint в форму и не испытываю проблем с отображением карт и местоположений; моя забота - время, необходимое для загрузки карты после ее создания.MapPoint 2009 Load Performance

Тесты на моей машине разработки показали, что среднее время загрузки составляет от 3 до 5 секунд, в течение которого приложение полностью заблокировано. Хотя это не совсем неприемлемо, очень сложно потерять контроль над приложением. Кроме того, поскольку поток GUI заблокирован, я не могу показать диалог загрузки или что-то, чтобы замаскировать время загрузки.

Линия, которая висит это: (где axMappointControl1 является контроль MapPoint)

axMappointControl1.NewMap(MapPoint.GeoMapRegion.geoMapNorthAmerica); 

Я попытался выполнения метода NewMap в другом потоке, но ГИП нить еще заканчивается заблокирован.

Мои вопросы:

  • Что я могу сделать, чтобы ускорить MapPoint при загрузке?
  • Есть ли способ загрузить MapPoint так, чтобы он не блокировал поток GUI?

Любая помощь с благодарностью.

ответ

5

these Согласно threads в mapforums.com медленность запуска ActiveX хорошо известна и неизбежная (хотя вопрос о резьбе, чтобы помочь с графической отзывчивостью остается открытый.

Одно предложили был отказаться от версии ActiveX в пользу объекта MapPoint.Application вместо

Надежда, что помогает

1

Да версия приложения работает в отдельном потоке -.. так что это должно быть быстрее альтернатива - проще сделать свой собственный материал в то время как он начинает Однако MapPoint 2010, как правило, занимает несколько секунд, чтобы начать работу при запуске пользователем.

Я бы создал временный поток графического интерфейса пользователя и использовал его для отображения заставки во время запуска и/или выполнения любой нитебезопасной инициализации, которую вам нужно выполнить.

Все вызовы экземпляра MapPoint (или элемента управления ActiveX) должны быть из того же потока, который создает объект управления MapPoint или объект приложения.