There are two issues here:
if (graphics.Count() > 0)
foreach (Graphic g in graphics)
GraphicLayer.GraphicsSource = graphics;
This should be:
if (graphics.Count() > 0)
GraphicLayer.GraphicsSource = graphics;
Secondly, and more importantly:
Dispatcher.CurrentDispatcher.Invoke((System.Action)(() =>
...should be:
Dispatcher.CurrentDispatcher.Invoke((System.Action)((graphics) =>