Вопрос

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

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

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

axMappointControl1.NewMap(MapPoint.GeoMapRegion.geoMapNorthAmerica);

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

Мои вопросы:

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

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top