gpt4 book ai didi

c# - map 控件 Gmap.net 崩溃

转载 作者:行者123 更新时间:2023-11-30 22:05:54 24 4
gpt4 key购买 nike

我在我的 winform 应用程序中使用 gmap.net map 控件。它在开发人员计算机上运行良好,但在客户端计算机上崩溃,尽管我们更新了所有系统。但几分钟后 map 崩溃并给出以下网络框架错误 enter image description here

最佳答案

我以前用过GMap.NET控件,遇到过类似的问题。从背景中的大红叉判断,GMap.NET 控件在其 OnPaint 期间崩溃了。方法。 enumeration operation may not execute抛出的错误通常是由在迭代集合时修改集合引起的:这是框架中的大多数集合类型所不允许的。

在其 OnPaint方法,GMap.NET 控件迭代许多集合,其中包括 GMapControl.Overlays收藏和 GMapOverlay.Markers , GMapOverlay.RoutesGMapOverlay.Polygons这些叠加层的集合。在我的例子中,当控件试图进行绘画时,我正在从后台线程修改这些集合,从而迭代这些集合。这导致了类似于您现在观察到的行为。

我注意到 GMap.NET 使用一个名为 ObservableCollectionThreadSafe<T> 的自定义集合类对于所有上述集合。这个名字意味着线程安全,因此在迭代过程中可能容忍修改,但我没有研究它的实现,所以我不确定这是否属实。我的观察似乎表明并非如此,但这是很久以前的事了。

当时,我通过invoking解决了我的问题将上述集合修改为 GUI 线程(由于缺少要锁定的同步对象)。调用确保修改不可能与 GMapControl.OnPaint 同时运行。方法,它也将始终在 GUI 线程上运行。

至于为什么您没有在您的机器上观察到这种行为:这可能是由于多种原因造成的。也许你很幸运,也许你使用的应用程序与客户端不同,等等。

您可能会在 GMap.NET discussions forum 上获得对您的问题更有帮助的答案顺便说一下。

关于c# - map 控件 Gmap.net 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24014020/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com