线程方法参数

时间:2013-07-01 00:19:18

标签: c# multithreading

你好我创建了3个线程,但是我需要他们共同使用一个数组列表来插入数据,我的问题是我创建了一个类似这个Thread t = new Thread(doThread);的线程但是如果你看到线程它是一个没有参数的方法但是我想传递前面提到的数组列表。 有可能吗?

1 个答案:

答案 0 :(得分:3)

您可以使用ParameterizedThreadStart代表

例如,

ArrayList theList = new ArrayList(); 
Thread t = new Thread(doThread);
t.Start(theList);

只要您的代理doThread具有匹配的签名:

,这将有效
public delegate void ParameterizedThreadStart(
    Object obj
)

有关ParameterizedStart代表的更多信息,请访问here

编辑 - 只需阅读您需要的内容超过ArrayList。请记住,虽然它只接受一个参数,但您可以创建自己的Object作为您需要发送到方法的所有内容的包装。

public class SendDataExample
{
   public ArrayList myList { get; set; }
   public string myString { get; set; }
}

然后,您可以在代理中使用Object,如下所示:

public void doThread(object data)
{
    var sendDataExample = (SendDataExample)data;
    ArrayList myList = sendDataExample.myList;
    string myString = sendDataExample.myString;
    ...
}