有什么用
System.Threading.Thread.Sleep(-1)
我希望这会引发异常,因为 Thread.Sleep 的文档说明了这一点
timeout 的值为负,不等于 Timeout.Infinite 毫秒,或大于 Int32.MaxValue 毫秒。
但是,上面的 Thread.Sleep(-1) 不会抛出异常。当我查看 ReferenceSource 时,我看到
[System.Security.SecuritySafeCritical] // auto-generated
public static void Sleep(int millisecondsTimeout)
{
SleepInternal(millisecondsTimeout);
// Ensure we don't return to app code when the pause is underway
if(AppDomainPauseManager.IsPaused)
AppDomainPauseManager.ResumeEvent.WaitOneWithoutFAS();
}
public static void Sleep(TimeSpan timeout)
{
long tm = (long)timeout.TotalMilliseconds;
if (tm < -1 || tm > (long) Int32.MaxValue)
throw new ArgumentOutOfRangeException("timeout",Environment.GetResourceString("ArgumentOutOfRange_NeedNonNegOrNegative1"));
Sleep((int)tm);
}
看起来它不会抛出负时间跨度,但只有小于 -1 的负时间跨度。
而且确实
Thread.Sleep(-2);
确实会崩溃。
那么这里的特殊情况是什么-1?什么是Thread.Sleep(-1)真正在做什么?
茅侃侃
相关分类