MapPoint 2009 Производительность загрузки - PullRequest
3 голосов
/ 12 сентября 2008

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

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

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

axMappointControl1.NewMap(MapPoint.GeoMapRegion.geoMapNorthAmerica);

Я пытался выполнить метод NewMap в другом потоке, но поток GUI по-прежнему блокируется.

Мои вопросы:

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

Любая помощь очень ценится.

Ответы [ 2 ]

5 голосов
/ 19 сентября 2008

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

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

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

1 голос
/ 04 января 2011

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

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

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

...