通过发送多个对象来调用委托方法来更新树视图

时间:2014-04-21 22:31:09

标签: c# .net multithreading treeview

我正在尝试更新树视图但我收到的错误是我无法将Obj转换为字符串。

我正在创建一个使用多个线程的扫描程序,一旦检查每个项目,我想调用一个委托来使用新信息更新树视图。如果我只使用对象调用方法,我可以轻松地调用它来更新信息,但是当我尝试使用字符串时,我也会收到错误。

以下是我的表现:

public delegate void StringDelegate(string input, string address);

        public void UpdateScan(string input, string ip)
        {
            TreeNode treeNode = new TreeNode(input);

            if (!(outputTree.Nodes.ContainsKey(input)))
            {
                //Add our parent node
                outputTree.Nodes.Add(treeNode);
                //Add our child node
                treeNode.Nodes.Add(ip);
            } 
            else
            {
                //Add only child node
                treeNode.Nodes.Add(ip);
            }

        }

public void scanItem()
{

//Scan code

//Result Code
string outPut = "Pretend Result";

                //Invoke our callback
                object[] obj = new object[1];
                obj[0] = outPut;
                outputTree.BeginInvoke(new StringDelegate(UpdateScan), obj, Ip.ToString());

}

有谁能告诉我哪里出错了?

1 个答案:

答案 0 :(得分:0)

您正在向呼叫显式添加对象。

更改

object[] obj = new object[1];
obj[0] = outPut;
outputTree.BeginInvoke(new StringDelegate(UpdateScan), obj, Ip.ToString());

outputTree.BeginInvoke(new StringDelegate(UpdateScan), outPut, Ip.ToString());