我很新的線程在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