我对 c# (WPF) 中的线程很陌生,因为我已经成功实现了一些标签和进度条更新,所以我不明白为什么当我尝试从在单独线程中调用的另一个类将项目添加到我的 GUI 的 treeView 时我得到一个例外:
WindowsBase.dll 中出现“System.InvalidOperationException”类型的未处理异常
附加信息:调用线程无法访问此对象,因为不同的线程拥有它。
我的更新树视图代码是这样的:
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(item);
提前致谢。