我有这样的结构:
private readonly List<Thread> thr = new List<Thread>();
在一个类中,我有一个带有一个参数的方法,我想调用它。
public void testthr(object xxx)
{
......
}
按钮点击我开始一个线程
for (Int32 i = 0; i < textBox8.Lines.Length; i++)
{
var thr1 = new Thread(testthr);
thr1.Start(textBox8.Lines[i].Trim());
thr.Add(threadz);
}
如何创建一个包含多个参数的线程?像:
public void testthr(object xxx, string yyy)
{
......
}
这个类在线程启动?
答案 0 :(得分:1)
如果要将多个值传递给线程proc,则需要创建一个包含它们的对象。有几种方法可以做到这一点。最简单的可能是使用Tuple:
for (Int32 i = 0; i < textBox8.Lines.Length; i++)
{
var thr1 = new Thread(testthr);
var data = new Tuple<string, string>(textBox8.Lines[i].Trim(), "hello");
thr1.Start(data);
thr.Add(thr1);
}
public void testthr(object state)
{
var data = (Tuple<string,string>)state;
var item1 = data.Item1;
var item2 = data.Item2;
...
}