2011-03-27 186 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