正在从错误的线程调用正在对此控件执行的操作。使用Control将Marshal连接到正确的线程

时间:2013-01-23 14:37:51

标签: c# multithreading

在下面的代码中出现了错误,如下所示:

  

正在从错误的线程调用正在对此控件执行的操作。使用Control.Invoke或Control.BeginInvoke对正确的线程进行Marshal来执行此操作。

在添加childNode()方法中。我们在执行此操作时遇到此错误this.Nodes.Insert(pos, oPart);。能否请你帮我解决这个问题。

public Part GetChildPart(string sKey)
{
    foreach (TreeNode node in this.Nodes)
    {
        Part child = node as Part;
        if (child.Text == sKey) return child;

    }

    //Part Opart = new Part();
    //Opart.Text = sKey;
    //return Opart;

     return null;
} 
public bool AddChildPart(Part oPart)
{
    int pos = 0; // Use for alpha sorted the node

    foreach (TreeNode node in this.Nodes)
    {
        if (node.Tag.ToString() == oPart.Tag.ToString())
        {
            // Avoid duplicate data
            return false;
        }
        else
        {
            if (node.Tag.ToString().CompareTo(oPart.Tag.ToString()) < 0)
            {
                pos++;
            }
        }
    }

    //if (this.TreeView.InvokeRequired)
    //    {
    //        this.TreeView.Invoke((MethodInvoker)delegate()
    //             {
    //                 //inTreeNode.Nodes.Add(tNode2);
    //                 this.Nodes.Insert(pos, oPart//            
    }
    //             );
    //}

    //this.Nodes.Add(oPart);
    this.Nodes.Insert(pos, oPart);--error is here

    //TreeView.Nodes.
    return true;
}

提前致谢!

0 个答案:

没有答案