Pergunta

Eu estou usando gmap.net Mapa de controlo no meu aplicativo winform.é a execução de bons desenvolvedores de computadores, mas falhar em computadores de clientes Apesar de atualização de todos os sistemas.mas depois de alguns minutos, o mapa é falha e dar seguintes net framework erroenter image description here

Foi útil?

Solução

Eu tenho usado o GMap.NET controle no passado, e eu me deparei com um problema semelhante.A julgar pelo grande e gordo da cruz vermelha em fundo, o GMap.NET controle caiu durante a sua OnPaint o método.O enumeration operation may not execute erro que é lançada, normalmente, é causado por modificação de uma coleção durante a iteração é:isso é algo que a maioria dos tipos de coleção no quadro não permite.

Em sua OnPaint método, o GMap.NET controle repete inúmeras coleções, entre outros o GMapControl.Overlays a recolha e o GMapOverlay.Markers, GMapOverlay.Routes e GMapOverlay.Polygons coleções dessas sobreposições.No meu caso, eu estava modificando essas coleções a partir de um thread em segundo plano enquanto o controle estava tentando fazer a sua pintura, e assim a iteração essas coleções.Isto resultou em um comportamento semelhante ao que você está observando agora.

Eu notei que GMap.NET utiliza uma classe de coleção personalizada chamada ObservableCollectionThreadSafe<T> para todos da referida coleção.O nome implica a segurança de segmentos e, por isso, possível de tolerância para modificações durante a iteração, mas eu ainda não estudada a sua aplicação, então eu não tenho certeza se isso é verdade.Minhas observações parecia indicar o contrário, mas isso foi há muito tempo atrás.

No momento, eu resolvi meus problemas invocando modificações acima referidas coleções para o thread da GUI (por falta de um objeto de sincronização para bloqueio).Invocando garante que as modificações não pode, possivelmente, ser executados simultaneamente com o GMapControl.OnPaint o método, que sempre será executado no thread da GUI bem.

Por que você não observar este comportamento em sua máquina:isto pode ser devido a inúmeras razões.Talvez você tem sorte, talvez você esteja usando o aplicativo de forma diferente do que o cliente, etc.

Provavelmente você pode obter mais útil respostas para sua pergunta sobre o GMap.NET fórum de discussão sobre o pelo caminho.

Outras dicas

A versão do usuário, talvez faltando o formulário específico do Windows DLL como - bem como o Core.dll Isso depende do que a versão do usuário está sendo executada do i.e Visual Studio ou do aplicativo .NET embalado que foi instalado no PC do usuário.Se este não for o caso, pode ser melhor procurar ajuda dos fóruns do GMAP.

Para corrigir este problema, tem de desactivar a invalidação enquanto actualizar ou adicionar marcadores ou polígonos:

MyMap.HoldInvalidation = True

'
' Add markers or polygons now
' 

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

Você está faltando a DLL que é necessária para executar o aplicativo, eu sugeriria copiar a pasta BIN completa no sistema local e, em seguida, tente executar o aplicativo.Se você criou o pacote MSI, verifique se a dependência é adicionada corretamente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top