NotSupportedException未处理 - 但为什么?

时间:2016-03-14 12:51:25

标签: wpf exception datagrid dispatcher

我得到一个例外,我不知道为什么我会得到这个。 我想用SQL中的数据更新DataGrid

问题似乎与我的ObservableCollection ..

有关

以下是代码:

private void Refresh()
{
    new Thread(() =>
    {
        List<DatabaseEntry> entries = GetBrokenJobs();
        Dispatcher.CurrentDispatcher.Invoke(() =>
        {
           UpdateUi(entries);
        });
    }).Start();
}

private void UpdateUi(List<DatabaseEntry> entries)
{
    Jobs.Clear();//<== !!! Exception origin !!!
    foreach (var jobName in entries.SelectMany(x => x.JobBezeichnung as string).ToList())
    {
       Jobs.Add(jobName.ToString());
    }
}

异常是说我无法修改&#34; SourceCollection&#34;当我不在Dispatcher-Thread上时......

但是我在Dispatcher上调用调用方法?!

我在这里缺少什么?故障在哪里?

2 个答案:

答案 0 :(得分:1)

你可以在这样的UI线程上运行

 Application.Current.Dispatcher.Invoke(() =>
 {
    UpdateUi(entries);
 });

答案 1 :(得分:0)

我通过在ViewModel中创建一个静态变量来修复它:

public static Dispatcher UI_Dispatcher { get; set; }

然后在我的ViewModel中:

public MainViewModel(Main window)
{
    UI_Dispatcher = Dispatcher.CurrentDispatcher; //Since we are on the UI-Thread when passing this piece of code this is the right Dispatcher
}

后来我刚刚在UI_Dispatcher.Invoke()上调用。