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

У меня возникли проблемы с интеграцией 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 ответа

Решение

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

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

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

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

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

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

Другие вопросы по тегам