我非常缺乏經驗的利用多線程技術,但這裏是我曾嘗試: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