Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过发送多个对象以调用委托方法更新treeview_C#_.net_Multithreading_Treeview - Fatal编程技术网

C# 通过发送多个对象以调用委托方法更新treeview

C# 通过发送多个对象以调用委托方法更新treeview,c#,.net,multithreading,treeview,C#,.net,Multithreading,Treeview,我正在尝试更新treeview,但收到一个错误,无法将Obj转换为字符串 我正在创建一个使用多个线程的扫描程序,检查每个项目后,我想调用一个委托,用新信息更新树视图。如果我只使用一个对象调用该方法,那么我可以很容易地调用它来更新信息,但是一旦我尝试使用字符串调用该方法,我就会得到一个错误 我是这样做的: public delegate void StringDelegate(string input, string address); public void UpdateSca

我正在尝试更新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());

}

有人能告诉我哪里出了问题吗?

您正在显式地向调用添加对象

改变

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


嘿,这解决了问题,现在我很好地返回了两个字符串。谢谢你的帮助。
outputTree.BeginInvoke(new StringDelegate(UpdateScan), outPut, Ip.ToString());