Question

J'ai quelques problèmes pour intégrer MS MapPoint 2009 dans mon application WinForms .Net 2.0 en C#.J'ai ajouté le contrôle ActiveX MapPoint sur un formulaire et je n'ai aucun problème à lui faire afficher des cartes et des emplacements ;ma préoccupation est le temps qu'il faut pour charger une carte une fois qu'elle est créée.

Les tests sur ma machine de développement ont montré que le temps de chargement moyen était compris entre 3 et 5 secondes, pendant lesquelles l'application est totalement verrouillée.Même si cela n’est pas totalement inacceptable, il faut énormément de temps pour perdre le contrôle de l’application.De plus, comme le thread GUI est verrouillé, je ne peux pas afficher de boîte de dialogue de chargement ou quelque chose pour masquer le temps de chargement.

La ligne qui bloque est la suivante :(où axMappointControl1 est le contrôle MapPoint)

axMappointControl1.NewMap(MapPoint.GeoMapRegion.geoMapNorthAmerica);

J'ai essayé d'exécuter la méthode NewMap sur un autre thread mais le thread GUI finit toujours par être bloqué.

Mes questions sont :

  • Que puis-je faire pour accélérer MapPoint lors de son chargement ?
  • Existe-t-il un moyen de charger MapPoint afin qu'il ne bloque pas le thread de l'interface graphique ?

Toute aide est grandement appréciée.

Était-ce utile?

La solution

Selon ces fils de discussion sur mapforums.com, la lenteur du démarrage d'ActiveX est bien connue et inévitable (bien que la question du threading pour aider à la réactivité de l'interface graphique soit toujours ouverte.

Une chose suggérée était d'abandonner la version ActiveX au profit de l'objet MapPoint.Application.

J'espère que cela pourra aider.

Autres conseils

Oui, la version de l'application s'exécute sur son propre thread - cela devrait donc être une alternative plus rapide - plus facile de faire vos propres tâches pendant le démarrage.Cependant, MapPoint 2010 a tendance à prendre quelques secondes pour démarrer lorsqu'il est démarré par un utilisateur.

Je créerais un thread GUI temporaire et l'utiliserais pour afficher un écran de démarrage lors du démarrage et/ou effectuer toute initialisation thread-safe que vous devez effectuer.

Tous les appels à une instance MapPoint (ou à un contrôle ActiveX) doivent provenir du même thread qui crée le contrôle MapPoint ou l'objet d'application.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top