2013-08-21 33 views
3

我有一個控制檯應用程序,當我使用Console.ReadLine(),應用程序將顯示「Hello World」的。爲什麼Console.ReadKey()不能`在Timer中使用Console.WriteLine爲什麼它會出現?

static void Main(string[] args) 
{ 
    System.Timers.Timer timer = new System.Timers.Timer(1000); 
    timer.Elapsed += timer_Elapsed; 
    timer.Enabled = true; 

    Console.ReadKey();// When use ReadLine() work fine; 
} 

static void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) 
{ 
    Console.WriteLine("Hello World"); 
} 

修正:http://support.microsoft.com/kb/2805221

+0

我不知道你在問什麼。這將基本上每秒鐘顯示'Hello World',直到您按下一個鍵。你想要什麼? – Jonesopolis

+5

如果您的計算機上安裝了.NET 4.5,請確保您已啓用Windows Update。您將得到一個更新,該更新修復了ReadKey()帶來阻止WriteLine()將文本寫入控制檯的鎖的問題。 –

+0

@HansPassant是的,你是對的!謝謝。 – Ruan

回答

0

我跑你的代碼,它的工作原理對於Console.ReadKey()和Console.ReadLine()

0

在此應用程序中,Timer運行在另一個線程上。另一方面,主線程並行執行Console.ReadKey()或Console.ReadLine(),Timer的線程繼續運行,並定期寫入「Hello World」,直到主線程退出。

如果你把Console.ReadKey()主鍵會在鍵盤按下後退出。
如果你把Console.ReadLine()按下鍵盤上的Enter鍵,主線程將退出。

有關類型的定時器的更多信息:http://msdn.microsoft.com/en-us/magazine/cc164015.aspx

相關問題