2011-03-27 184 views
82

如何在C#中爲程序添加延遲?如何添加延遲2或3秒

+2

有這樣做的幾種方法,但*爲什麼*您需要添加一個延遲?如果我們知道,那麼我們就能夠提出最合適的方式來實現它。 – ChrisF 2011-03-27 14:47:23

+3

這個問題是無可救藥的不足之處,建議Thread.Sleep()。 – 2011-03-27 14:47:40

+1

只是澄清,我投票結束這個問題,因爲你沒有提供足夠的細節給任何人提供一個好的,高質量的答案。我非常願意重新開放它作爲一個有效的問題,如果你添加一些更多的細節,你到底想做什麼。儘早結束投票是防止質量差的問題大量「噪音」答案的一種方法。一旦你添加了更多的細節,留下我的評論和/或標記一個國防部重新打開它。 – 2011-03-27 16:02:29

回答

122

您可以使用Thread.Sleep()函數,例如,

int milliseconds = 2000; 
Thread.Sleep(milliseconds); 

用於停止當前線程的2秒鐘的執行。

無論如何,這不能滿足您的需求......您究竟想要完成什麼?

+11

避免使用Thead.Sleep原因它將完全阻止當前線程執行任何操作直到持續時間結束。 – 2011-03-27 14:59:51

+6

@穆罕默德:是的,當然它會完全阻止。但有時它可能是有用的......它真的取決於OP需要什麼...... – digEmAll 2011-03-27 15:07:17

+4

由於我不能發表一個新的答案,我想評論 - 如果你不希望它阻止程序,你可以使用'await Task.Delay(毫秒)'。這對我有用:) – SaiyanGirl 2015-08-01 20:25:31

36

使用間隔設置爲2-3秒的計時器。

你有三個不同的選項可供選擇,這取決於應用程序的類型你寫的:

  1. System.Timers.Timer
  2. System.Windows.Forms.Timer
  3. System.Threading.Timer

不要使用Thread.Sleep,因爲這將完全鎖定線程並阻止它處理其他消息。假設一個單線程應用程序(大多數應用程序),您的整個應用程序將停止響應,而不是按照您的預期暫停。

+4

如果它是一個控制檯應用程序,'Thread.Sleep'警告可能不那麼重要。 – 2011-03-27 14:54:42

+1

有一個第四個計時器:[System.Web.UI.Timer](https://msdn.microsoft.com/en-us/library/system.web.ui.timer.aspx),一個ASP.NET組件定期執行異步或同步網頁回發。 – David 2016-09-28 13:49:32

4
System.Threading.Thread.Sleep(
    (int)System.TimeSpan.FromSeconds(3).TotalMilliseconds); 

或用using聲明:

Thread.Sleep((int)TimeSpan.FromSeconds(2).TotalMilliseconds); 

我喜歡這1000 * numSeconds(或簡稱3000),因爲它使得它更明顯的是怎麼回事的人誰之前沒有使用Thread.Sleep。它更好地記錄你的意圖。

+1

+1 TimeSpan超過1000 * – Lefty 2013-11-25 14:44:46

+0

使用.NET 4以後,您可以直接使用'Thread.Sleep(TimeSpan)',而不必強制轉換爲int。 – Holf 2016-12-22 10:18:20

32

對於2,3秒鐘,你應該做的:

Thread.Sleep(2300); 
+21

+1 for 2300 :-) – Heliac 2013-04-03 14:23:37