我有一个数据网格。我想通过事件添加列。 所以我做了
for (int iii = 1; iii <= 4; ++iii)
{
var dtgColumn = new DataGridTextColumn();
dtgColumn.Header = "AAA"
Dispatcher.Invoke((Action)(() => { dtgResults.Columns.Add(dtgColumn); }));
}
但是尽管使用了调度程序,我得到了这个错误:
调用线程无法访问此对象,因为另一个线程拥有它。
感谢您的帮助 帕特里克 }
答案 0 :(得分:1)
看起来问题不是UI
控件本身,而是创建了dtgColumn
对象。您正在一个线程上创建UI
元素,并将其添加到主线程上的UI
元素。
更改您的代码,如:
Dispatcher.Invoke((Action)(() => {
var dtgColumn = new DataGridTextColumn();
dtgColumn.Header = "AAA"
dtgResults.Columns.Add(dtgColumn);
}));
因此,对象被创建并添加到拥有UI
父控件的线程上。