您好,我创建了 3 个线程,但我需要它们共同使用一个数组列表来插入数据,我的问题是我创建了一个这样的线程,Thread t = new Thread(doThread);
但是如果您看到 do thread 它是一种没有参数的方法,但我想传递提到的数组列表前。这是可能的 ?
问问题
131 次
1 回答
3
您可以使用ParameterizedThreadStart
委托
例如,
ArrayList theList = new ArrayList();
Thread t = new Thread(doThread);
t.Start(theList);
只要您的代表 ,doThread
具有以下匹配的签名,这将起作用:
public delegate void ParameterizedThreadStart(
Object obj
)
有关ParameterizedStart
委托的更多信息,请参见此处。
编辑 - 只需阅读您将需要的不仅仅是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;
...
}
于 2013-07-01T00:44:35.110 回答