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

271 views Asked by At

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 answers

1
David Hope 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
dotMorten On

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