ARCGIS Runtime for .NET:为什么我收到System.ArgumentException'已经添加了具有相同密钥的项目'?

时间:2017-01-05 20:10:19

标签: .net esri arcgis-runtime

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

  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)
  5. 然后,当某些内容发生变化时,我会拨打overlay.Graphics.Clear(),然后重复步骤2-3。

    当我这样做时,有时在new Graphic(...),我会得到例外(但不是每次都有)

    我使用的是Esri.ArcGISRuntime版本100.0.0.0。 知道发生了什么吗?

2 个答案:

答案 0 :(得分:0)

好吧,问题似乎是因为overlay.Graphics.Clear()只是将对象释放到垃圾收集器,而底层的本机对象还没有被处理掉。

强制垃圾收集器运行:

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

这导致物品被丢弃并且消除了相同的键"例外

答案 1 :(得分:0)

这是我们已在下次更新中修复的已知错误。强制GC现在可以解决这个问题。