Dispatcher.Invoke失败

时间:2014-11-26 12:04:17

标签: c# wpf multithreading mvvm dispatcher

我在更新我的视图时遇到了问题。

我有两个DataGrids,我必须动态添加列。为此,我向DataGrid添加了一个附加属性,它绑定到一个ObservableCollection,然后编写了一个自定义ObjectToDataGridColumnConverter,它将一个对象(主要是字符串)转换为DataGridColumn,然后将这个新列添加到DataGrid。

它适用于我的两个DataGrids中的一个。另一个(首先是updatet)打破了

var grid = source as DataGrid;
grid.Columns.Add(col);

带有InvalidOperationException:

The calling thread cannot access this object because a different thread owns it.

即使我尝试Application.Current.Dispatcher.Invoke(new Action(() => grid.Columns.Add(col)),它也会因同样的异常而中断。

我的其他DataGrid使用相同的代码添加其列,它工作正常。即使没有对Dispatcher对象的任何Invoke调用。

0 个答案:

没有答案