How can I diagnose the above exception? In my code, I roughly do the following:

  1. Create an overlay ( overlay = new GraphicsOverlay() )
  2. Create a set of polygons ( poly = new Polygon(mappoints) where mappoints is a PointCollection)
  3. Create a graphic with the polygon geometry and a simple fill symbol for each polygon ( graphic = new Graphic() { Geometry = poly, Symbol = new SimpleFillSymbol() { Color = Colors.Red } } )
  4. Add that graphic to the overlay. ( overlay.Add(graphic) )

Then, when something changes, I will call overlay.Graphics.Clear(), then repeat steps 2-3.

When I do this, sometimes on the new Graphic(...), I will get the exception (but not every time)

I'm using Esri.ArcGISRuntime version 100.0.0.0. Any idea what's going on?

2

There are 2 best solutions below

1
On BEST ANSWER

Ok, it appears that the problem was that because the overlay.Graphics.Clear() was just releasing the objects to the garbage collector that the underlying native objects hadn't yet been disposed.

By forcing the garbage collector to run:

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

This caused the objects to be disposed and elimintate the "same key" exception

0
On

This is a known bug that we'll have fixed in the next update. Forcing GC will work around the issue for now.