Domanda

Sto riscontrando alcuni problemi nell'integrazione di MS MapPoint 2009 nella mia applicazione WinForms .Net 2.0 in C#.Ho aggiunto il controllo ActiveX MapPoint a un modulo e non ho problemi a visualizzarne mappe e posizioni;la mia preoccupazione è il tempo necessario per caricare una mappa una volta creata.

I test sulla mia macchina di sviluppo hanno dimostrato che il tempo medio di caricamento è compreso tra 3 e 5 secondi, durante i quali l'applicazione è completamente bloccata.Anche se questo non è del tutto inaccettabile, è un tempo terribilmente lungo per perdere il controllo dell'applicazione.Inoltre, poiché il thread della GUI è bloccato, non posso mostrare una finestra di dialogo di caricamento o qualcosa per mascherare il tempo di caricamento.

La riga che si blocca è questa:(dove axMappointControl1 è il controllo MapPoint)

axMappointControl1.NewMap(MapPoint.GeoMapRegion.geoMapNorthAmerica);

Ho provato a eseguire il metodo NewMap su un altro thread ma il thread della GUI risulta ancora bloccato.

Le mie domande sono:

  • Cosa posso fare per velocizzare MapPoint durante il caricamento?
  • Esiste un modo per caricare MapPoint in modo che non blocchi il thread della GUI?

Qualsiasi aiuto è molto apprezzato.

È stato utile?

Soluzione

Secondo questi discussioni su mapforums.com la lentezza dell'avvio di ActiveX è ben nota e inevitabile (sebbene la questione del threading per aiutare con la reattività della GUI sia ancora aperta.

Una cosa suggerita era invece quella di abbandonare la versione ActiveX a favore dell'oggetto MapPoint.Application.

Spero che aiuti.

Altri suggerimenti

Sì, la versione dell'applicazione funziona su un proprio thread, quindi questa dovrebbe essere un'alternativa più rapida e più semplice eseguire le proprie operazioni durante l'avvio.Tuttavia, MapPoint 2010 tende a impiegare alcuni secondi per l'avvio quando viene avviato da un utente.

Vorrei creare un thread GUI temporaneo e utilizzarlo per visualizzare una schermata iniziale durante l'avvio e/o eseguire qualsiasi inizializzazione thread-safe necessaria.

Tutte le chiamate a un'istanza di MapPoint (o a un controllo ActiveX) devono provenire dallo stesso thread che crea il controllo MapPoint o l'oggetto applicazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top