ARCGIS Runtime for .NET:为什么我得到 System.ArgumentException 'An item with the same key has already been added'?

ARCGIS Runtime for .NET: Why am I getting System.ArgumentException 'An item with the same key has already been added'?

如何诊断上述异常?在我的代码中,我大致执行以下操作:

  1. 创建叠加层(overlay = new GraphicsOverlay()
  2. 创建一组多边形(poly = new Polygon(mappoints),其中 mappointsPointCollection
  3. 使用多边形几何图形和每个多边形的简单填充符号创建一个图形 ( graphic = new Graphic() { Geometry = poly, Symbol = new SimpleFillSymbol() { Color = Colors.Red } } )
  4. 将该图形添加到叠加层。 ( overlay.Add(graphic) )

然后,当有变化时,我会调用 overlay.Graphics.Clear(),然后重复步骤 2-3。

当我这样做时,有时 new Graphic(...),我会得到异常(但不是每次)

我正在使用 Esri.ArcGISRuntime 版本 100.0.0.0。 知道发生了什么事吗?

好的,看来问题是因为 overlay.Graphics.Clear() 只是将对象释放给垃圾收集器,而底层的本机对象尚未被释放。

通过强制垃圾收集器 运行:

    GC.Collect();
    GC.WaitForPendingFinalizers();

这导致对象被释放并消除了 "same key" 异常

这是一个已知错误,我们将在下一次更新中修复。强制 GC 将暂时解决此问题。