我看到其他用户帖子显示秒表测量在“Thread.Sleep(5000)”中花费的时间约为 5000 毫秒。
但我的程序产生以下结果
for (int i = 0; i < 20; ++i)
{
Stopwatch sw = Stopwatch.StartNew();
DateTime start = DateTime.Now;
Thread.Sleep(5000);
sw.Stop();
Console.Out.WriteLine(
"StopWatch Diff:" +
sw.ElapsedMilliseconds.ToString());
Console.Out.WriteLine(
"DateTime Diff:" +
DateTime.Now.Subtract(start).TotalMilliseconds.ToString());
}
秒表差异:1684 日期时间差异:5262.592 秒表差异:1625 日期时间差异:4997.12 秒表差异:1604 日期时间差异:4997.12 秒表差异:1601 日期时间差异:4997.12 秒表差异:1690 日期时间差异:4997.12 秒表差异:1603
只有我在观察这种行为吗?为什么秒表在实际过去 5 秒后测量 1.6 秒。这是线程实际运行的时间?