Domanda

Sto usando il controllo della mappa GMAP.net nella mia applicazione WinForm.Sta correndo bene nei computer degli sviluppatori, ma si schianta sui computer dei clienti, anche se aggiorniamo tutti i system.Ma dopo poco minuto la mappa è crash e fornisce il seguente errore del framework Net inserire la descrizione dell'immagine qui

È stato utile?

Soluzione

Ho usato il controllo GMAP.net in passato, e ho corso un problema simile. A giudicare dalla grande croce rossa grassa in background, il controllo GMAP.net è stato schiantato durante il suo metodo OnPaint. L'errore enumeration operation may not execute che viene lanciato è tipicamente causato dalla modifica di una raccolta mentre ITERATING ITERING: questo è qualcosa che la maggior parte dei tipi di raccolta nel framework non consente.

Nel suo metodo OnPaint, il controllo GMAP.net itera numerose collezioni, tra l'altro la raccolta GMapControl.Overlays e le GMapOverlay.Markers, GMapOverlay.Routes e GMapOverlay.Polygons Collections di tali sovrapposizioni. Nel mio caso, stavo modificando queste collezioni da un filo di sfondo mentre il controllo stava cercando di fare il suo dipinto, e quindi interaggendo queste collezioni. Ciò ha comportato un comportamento simile a ciò che stai osservando ora.

Ho notato che GMap.net utilizza una classe di raccolta personalizzata chiamata ObservableCollectionThreadSafe<T> per tutta la raccolta sopra menzionata. Il nome implica la sicurezza del filo e quindi possibile tolleranza per le modifiche durante l'iterazione, ma non ho studiato la sua implementazione, quindi non sono sicuro che questo sia vero. Le mie osservazioni sembravano indicare altrimenti, ma questo era un po 'di tempo fa.

Al momento, ho risolto i miei problemi di Invocazione Modifiche alle raccolte sopra menzionate al filo della GUI (mancata mancanza di un oggetto di sincronizzazione da bloccare). Avvicinamento assicura che le modifiche non possano funzionare contemporaneamente al metodo GMapControl.OnPaint, che verrà sempre eseguito anche sul filo GUI.

Per quanto riguarda il motivo per cui non stai osservando questo comportamento sulla tua macchina: questo potrebbe essere dovuto a numerose ragioni. Forse sei stato fortunato, forse stai usando l'applicazione in modo diverso rispetto al cliente, ecc.

Puoi probabilmente ottenere risposte più utili alla tua domanda su gmap.net Discussions Forum A proposito .

Altri suggerimenti

La versione dell'utente non ha mancato la DLL specifica di Windows DLL come-bene come Core.dll, dipende da ciò che la versione utente è in esecuzione da I.E Visual Studio o applicazione .NET confezionata che è stata installata sul PC dell'utente.Se questo non è il caso potrebbe essere meglio cercare aiuto dai forum GMAP.

Per risolvere questo problema, devi disabilitare l'invalida di aggiornamento o aggiungere marcatori o poligoni:

MyMap.HoldInvalidation = True

'
' Add markers or polygons now
' 

MyMap.HoldInvalidation = False      ' Not sure if this line is needed
MyMap.Refresh()
.

Ti mancano la DLL che è richiesta per eseguire l'applicazione, suggerirei di copiare la cartella BIN completa sul sistema locale e quindi provare a eseguire l'applicazione.Se hai creato il pacchetto MSI, assicurarsi che la dipendenza venga aggiunta correttamente.

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