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 или объект приложения.