如何调用AddPath()?

时间:2012-06-28 10:33:46

标签: c# multithreading function invoke

我有以下功能:

 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

1 个答案:

答案 0 :(得分:1)

如果你需要从一个与创建它的线程不同的线程(在你的情况下)调用UI中的某个对象,答案就是你实际上不能。更好的答案是,您可以通过winform Control.Invoke和WPF Dispatcher.Invoke进行调用。只有在winform中,您才能使用this method调查是否确实需要调用invoke。通常,您应该将异步部分与更新UI的部分分开,以避免混淆过多的代码。