我非常缺乏经验的利用多线程技术,但这里是我曾尝试:C#生成新线程,然后等待
Thread thread = null;
for (int minute = 0; minute < 60; minute++)
{
Thread.Sleep(60000);
if (thread != null)
{
while (thread.ThreadState == ThreadState.Running) { }
}
thread = new Thread(delegate()
{
// Do stuff during the next minute whilst the main thread is sleeping.
});
thread.Start();
}
我想在这里实现的是有一个线程在运行,做在主线程休眠时工作,但我不确定为什么上面的代码不起作用。会发生什么是在第一个循环之后(在启动线程之后),ThreadState似乎没有从“Running”中改变。我也很好奇这是否有更优雅的方式。
有人知道这个问题吗?
感谢所有的答案,但也许不清楚我想达到什么。我想运行线程委托中给出的代码,而主线程睡眠一分钟,但如果新线程在这一分钟内没有完成,那么主线程将在创建另一个新线程之前等待它完成。这是必需的,以便分钟数尽可能接近真实分钟。 – TheBoss 2012-04-17 05:23:17
嗯..仍然没有得到它。你说的是主线程应该等到产生的线程结束,但至少要一分钟?是对的吗? – harri 2012-04-17 05:52:33
下面是过程应该如何进行的:在for循环的第一次迭代中,主线程将等待1分钟,之后它将创建一个新线程来并行执行任务。开始这个新线程后,它会再次迭代,主线程休眠1分钟,然后如果并行任务[奇怪]在那一分钟内没有完成任务,它将等待它完成。一旦并行任务完成后,它将创建一个新的线程等。 – TheBoss 2012-04-17 12:30:52