c#类中的两个对象不工作线程

时间:2013-09-15 17:37:22

标签: multithreading

我有这样的结构:

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)
    {
     ......
    }

这个类在线程启动?

1 个答案:

答案 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;
    ...
}