我有以下功能:
public void AddPath(String full_path)
{
TreeView tree_view = TheTreeView;
String[] split_path;
TreeNodeCollection current_nodes;
if (tree_view == null)
return;
if (String.IsNullOrEmpty(full_path))
return;
split_path = full_path.Split(tree_view.PathSeparator.ToCharArray());
current_nodes = tree_view.Nodes;
for (Int32 i = 0; i < split_path.Length; i++)
{
TreeNode[] found_nodes = current_nodes.Find(split_path[i], false);
if (found_nodes.Length > 0)
{
current_nodes = found_nodes.First().Nodes;
}
else
{
TreeNode node;
node = new TreeNode();
node.Name = split_path[i]; // name is the same thing as key
node.Text = split_path[i];
current_nodes.Add(node);
current_nodes = node.Nodes;
}
}
}
我需要从一个单独的线程调用此函数。我该怎么做? 我知道如何调用TreeView.Nodes.Add(),但我该怎么做? 0.o
-Swen
答案 0 :(得分:1)
如果你需要从一个与创建它的线程不同的线程(在你的情况下)调用UI中的某个对象,答案就是你实际上不能。更好的答案是,您可以通过winform Control.Invoke和WPF Dispatcher.Invoke进行调用。只有在winform中,您才能使用this method调查是否确实需要调用invoke。通常,您应该将异步部分与更新UI的部分分开,以避免混淆过多的代码。