System.Threading.thread.Sleep(1000);
暫停整個程序1秒鐘,但是當這秒鐘結束時,它會做這一段時間所能做的一切。例如:Thread.Sleep - 如何正確使用它?
Thread.Sleep(1000);
Console.WriteLine("A");
Thread.Sleep(1000);
Console.Writeline("B");
將等待兩秒鐘,寫
一個
乙
如何正確使用暫停?
System.Threading.thread.Sleep(1000);
暫停整個程序1秒鐘,但是當這秒鐘結束時,它會做這一段時間所能做的一切。例如:Thread.Sleep - 如何正確使用它?
Thread.Sleep(1000);
Console.WriteLine("A");
Thread.Sleep(1000);
Console.Writeline("B");
將等待兩秒鐘,寫
一個
乙
如何正確使用暫停?
Thread.Sleep()
行爲就像你想象的那樣;它只是將當前線程暫停大約給定的毫秒數。
這裏的問題是,標準輸出流不一定在每次調用寫入時刷新到控制檯(或指向的任何位置)。相反,它可能會緩存一些內容,以便將其寫入更大的塊以提高效率。嘗試撥打Console.Out.Flush()
;在每個WriteLine()之後,你應該看到你期望的結果。
這不僅僅是關於控制檯應用程序。 WinForms的行爲方式相同 – user3493623
是否有任何方法可以暫停任何類型或單個線程的應用程序? – user3493623
@ user3493623 Thread.Sleep()將暫停任何類型的應用程序。如果您想要定期發生某些事情,請考慮使用計時器 – ChaseMedallion
如果您希望每秒發生一次事件,請創建一個計時器。例如:
private System.Threading.Timer _timer;
void main()
{
_timer = new Timer(TimerTick, null, 1000, 1000);
// do other stuff in your main thread
}
void TimerTick(object state)
{
// do stuff here
}
有幾種不同類型的定時器。如果你正在編寫一個控制檯程序,那麼我會建議使用System.Threading.Timer。在Windows窗體應用程序中,可以使用System.Windows.Forms.Timer
或System.Timers.Timer
。有關更多信息,請參閱Timers。
無法重現此操作。這是整個代碼?我問,因爲在你的例子中有一個錯字:'Writeline'應該是'WriteLine'。 – Stijn
一般來說,使用'Thread.Sleep'的正確方法是根本不使用它。你想做什麼?這很可能是您要做的事情,而不需要讓線程進入睡眠狀態。 –
我試圖在程序中運行一個單獨的無限線程,但在它的迭代之間必須有1秒鐘的中斷。這個「代碼」可能是我試圖做的一個壞示例 – user3493623