为Thread.Sleep(TimeSpan)设置高值

She*_*tty 3 .net c# multithreading exception

我希望我的应用程序中的一个线程执行一个任务,并在那个睡眠后持续一段特定的时间.我用Thread.Sleep()一个TimeSpan值作为参数.它工作正常.但是当我设置一个很大的值,比如25.20:30:40(25天20小时20分40秒),它会抛出一个ArgumentOutOfRangeException.

http://msdn.microsoft.com/en-us/library/274eh01d(v=vs.110).aspx

例外情况

ArgumentOutOfRangeException timeout的值为负且不等于Timeout.Infinite(以毫秒为单位),或者大于Int32.MaxValue毫秒.

从配置文件中读取睡眠时间的值.在测试时,测试人员将此值设置为如上所述的高值.我感兴趣的是要知道在我提到的时间内让我的线程不做任何事情的更好方法是什么.(即使它太高了.)

Lee*_*Lee 11

文档告诉您最大时间跨度:

TimeSpan maxSleepSpan = TimeSpan.FromMilliseconds(int.MaxValue);
Run Code Online (Sandbox Code Playgroud)

这是24.20:31:23.6470000.如果你需要睡得更久,那么你需要重新考虑你的设计.

  • 事实上,重新思考设计即使在睡了10分钟也是合适的...这对于调度程序来说是有效的,而不是"Thread.Sleep":D (3认同)
  • @Luaan - 是的,我同意,称"睡眠"通常是一个错误. (2认同)