У меня возникли проблемы с интеграцией MS MapPoint 2009 в мое приложение WinForms .Net 2.0 на C#. Я добавил элемент управления ActiveX MapPoint в форму, и у меня нет проблем с его отображением карт и местоположений; Меня беспокоит время, необходимое для загрузки карты после ее создания.
Тесты на моей машине разработки показали, что среднее время загрузки составляет от 3 до 5 секунд, в течение которых приложение полностью заблокировано. Хотя это не совсем неприемлемо, потерять контроль над приложением очень долго. Кроме того, поскольку поток графического интерфейса заблокирован, я не могу показать диалог загрузки или что-то еще, чтобы замаскировать время загрузки.
Строка, которая висит, выглядит так: (где axMappointControl1 - это элемент управления MapPoint)
axMappointControl1.NewMap(MapPoint.GeoMapRegion.geoMapNorthAmerica);
Я пробовал выполнить метод NewMap в другом потоке, но поток графического интерфейса все еще блокируется.
Мои вопросы:
Любая помощь приветствуется.





Согласно этипотоки на mapforums.com, медленность запуска ActiveX хорошо известна и неизбежна (хотя вопрос о многопоточности, чтобы помочь с отзывчивостью графического интерфейса пользователя, все еще остается открытым.
Было предложено отказаться от версии ActiveX в пользу объекта MapPoint.Application.
Надеюсь, это поможет.
Да, версия приложения работает в собственном потоке - так что это должна быть более быстрая альтернатива - проще делать свои собственные вещи во время запуска. Однако MapPoint 2010 обычно запускается через несколько секунд после запуска пользователем.
Я бы создал временный поток графического интерфейса и использовал бы его для отображения экрана-заставки во время запуска и / или выполнения любой поточно-ориентированной инициализации, которую вам нужно сделать.
Все вызовы экземпляра MapPoint (или элемента управления ActiveX) должны происходить из того же потока, который создает элемент управления MapPoint или объект приложения.