C# - 不执行线程中的方法

时间:2015-09-19 06:08:37

标签: c# multithreading

使用thread.start()执行线程中的方法; 相反,当我使用thread.join()时,它们会被执行。

Thread[] threads = new Thread[12];
        int temp;

        //_stopRequest = false;
        for (int i = 0; i < threads.Length - 1; i++)
        {
            temp = i;
            threads[temp] = new Thread(new ThreadStart(() => test(test1[temp],"start", temp)));
            threads[temp].Start();
            //threads[temp].Join();
        }

有人可以说清楚这一点。

尝试同时启动所有线程

1 个答案:

答案 0 :(得分:0)

尝试添加

for(int i=0; i<threads.Length-1; i++)
{
    threads[i].Join();
}

在方法结束时。你的线程将同时开始,你将等待他们的结束。其他变体:将其IsBackground属性设置为true。因此,在这些线程完成工作之前,您的程序将无法完成。

P.S。在你的循环中使用&#34; int temp = i;&#34;,如果你想使用闭包。在您的情况下,所有线程都关闭到相同的变量temp。