我很新的线程在c#(WPF),因为我已经实现了一些标签和progressbar更新成功,我不明白为什么当我尝试添加项目到我的GUI的treeView从被称为一个单独的线程另一个类我得到一个异常:更新从另一个线程treeview
类型的未处理的异常“System.InvalidOperationException” 发生在WindowsBase.dll
其他信息:调用线程不能访问此对象 因为不同的线程拥有它。
我的更新树视图代码是这样的:
private void updateTreeView(TreeView tree, List<TreeViewItem> items, Boolean clear) {
tree.Dispatcher.Invoke(new Action(() => {
if (clear) {
tree.Items.Clear();
}
ItemCollection treeitems = tree.Items;
foreach (TreeViewItem item in items) {
treeitems.Dispatcher.Invoke(new Action(() => {
treeitems.Add(item);
}));
}
tree.ItemsSource = treeitems;
}));
}
,并在线路异常点:
treeitems.Add(项目);
在此先感谢。
我最初误解了你的问题。你在哪里创建你传递给updateTreeView函数的这些TreeView项目(List项目)?你有没有确保在主线程中创建它们。好像你的TreeView项目是在工作线程上创建的,然后试图从主线程添加它们。 –
Viv