Производительность загрузки MapPoint 2009

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

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

Строка, которая висит, выглядит так: (где axMappointControl1 - это элемент управления MapPoint)

axMappointControl1.NewMap(MapPoint.GeoMapRegion.geoMapNorthAmerica);

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

Мои вопросы:

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

Любая помощь приветствуется.


person akmad    schedule 12.09.2008    source источник


Ответы (2)


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

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

Надеюсь, это поможет.

person Frosty    schedule 18.09.2008

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

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

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

person winwaed    schedule 04.01.2011