我遇到了一些問題,我不明白爲什麼會發生。 下面是簡單的例子:有時線程無法啓動
class ConsoleApp
{
static void Main(string[] args)
{
Thread workThread = new Thread(ThreadProc);
//Console.WriteLine("Starting"); // uncomment this
workThread.Start();
Console.ReadKey(true); // first ReadKey
Console.ReadKey(true); // second ReadKey
}
static void ThreadProc()
{
Console.WriteLine("ThreadProc started");
Random rnd = new Random();
for (int i = 0; i < 5; i++)
{
int timeout = rnd.Next(500, 1000);
Thread.Sleep(timeout);
Console.WriteLine("ThreadProc {0} slept {1} ms", i, timeout);
}
}
}
當我運行此,workThread沒有啓動,直到我按一些鍵(第一ReadKey後)。如果我取消註釋第一個Console.WriteLine,workThread立即啓動。
任何人都可以解釋這種行爲嗎?
競賽條件。請參閱http://stackoverflow.com/questions/15143931/strange-behaviour-of-console-readkey-with-multithreading – Maarten 2013-05-07 07:30:28
我複製了您的代碼並嘗試了該操作,但該線程立即啓動,無論是評論還是取消註釋該行。 – 2013-05-07 07:31:32
我不能重複這一點。這是在什麼環境下運行的? – Nick 2013-05-07 07:33:00