有什么用 System.Threading.Thread.Sleep(-1)我希望这会引发异常,因为 Thread.Sleep 的文档说明了这一点timeout 的值为负,不等于 Timeout.Infinite 毫秒,或大于 Int32.MaxValue 毫秒。但是,上面的 Thread.Sleep(-1) 不会抛出异常。当我查看 ReferenceSource 时,我看到[System.Security.SecuritySafeCritical] // auto-generatedpublic 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)真正在做什么?
2 回答
茅侃侃
TA贡献1842条经验 获得超21个赞
这是一种特殊情况,本质上意味着“睡眠直到有人刺激你”——另一个线程可以通过调用Thread.Interrupt()
. 然后睡眠线程应该期望捕获ThreadInterruptedException
.
- 2 回答
- 0 关注
- 220 浏览
添加回答
举报
0/150
提交
取消