2008-09-12 3 views
3

Je rencontre des problèmes lors de l'intégration de 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 à le faire pour 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.Performances de chargement de MapPoint 2009

Les tests sur ma machine de développement ont montré que le temps de chargement moyen est compris entre 3 et 5 secondes, pendant lesquelles l'application est totalement verrouillée. Bien que ce ne soit pas totalement inacceptable, il est terriblement long de perdre le contrôle de l'application. En outre, comme le thread graphique est verrouillé, je ne peux pas afficher une boîte de dialogue de chargement ou quelque chose pour masquer le temps de chargement.

La ligne qui accroche 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 fil, mais le fil GUI finit toujours par être bloqué.

Mes questions sont les suivantes:

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

Toute aide est grandement appréciée.

Répondre

5

Selon thesethreads à mapforums.com la lenteur du démarrage ActiveX est bien connu et inévitable (bien que la question du filetage pour aider à la réactivité de l'interface graphique est toujours ouverte.

Une chose a suggéré était d'abandonner la version ActiveX en faveur de l'objet MapPoint.Application au lieu

espoir qui aide

1

Oui la version d'application fonctionne sur son propre thread -.. ce qui devrait être une alternative plus rapide - plus facile à faire vos propres trucs alors qu'il commence Cependant, MapPoint 2010 a tendance à prendre quelques secondes pour démarrer lorsqu'il est démarré par un utilisateur.

Je voudrais créer un thread graphique temporaire et l'utiliser pour afficher un écran de démarrage au démarrage et/ou faire une initialisation thread-safe que vous devez faire.

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

Questions connexes