Hi, I spend whole week and still I can't find the solution. In my code, button click runs long asynchronous operation. After calculation I want add results (which type is List<Graphic>) to my GraphicsLayer.Using ContinueWithMethod and TaskScheduler or Dispatcher works fine for all UI elements for example ProgressBar but not for my resultsGraphicsLayer. Why?Exception: "An exception of type 'System.InvalidOperationException' occurred in WindowsBase.dll but was not handled in user code.The calling thread cannot access this object because a different thread owns it." private void runButton_Click(object sender, RoutedEventArgs e)
{
var _ = RunCalcAsync();
}
private async Task RunCalcAsync()
{
await Task.Run(() =>
{
\\ long time operation
var results = RunCalc();
}).ContinueWith((t) =>
{
GraphicsLayer resultsGraphicsLayer = map.Layers["results"] as GraphicsLayer;
resultsGraphicsLayer.Graphics.AddRange(results); // this line throw an exception :-(
},
CancellationToken.None,
TaskContinuationOptions.None,
TaskScheduler.FromCurrentSynchronizationContext());
}
Any help is much appreciated. Thanks! Mike