c# - .NET Thread.Sleep 是否受 DST(或系统时间)更改的影响?

标签 c# .net windows kernel clock

我不确定 Windows 内核如何处理线程时序......

我说的是 DST 和任何其他影响 Windows 机器上一天中的时间的事件。

例如,线程 .Sleep将阻塞从零到 infinite 的线程毫秒。

如果内核使用与一天中的时间相同的“时钟”,那么什么时候

(a) 有人手动更改一天中的时间,或者
(b) 与时间服务器的某些同步改变了一天中的时间,或者
(c) 夏令时开始或结束,系统已配置为响应这两个 DST 事件,
等等

休眠线程是否受到任何影响?即,内核是否以程序员无需执行任何操作的方式处理此类事件?

注意:对于非关键应用程序,这可能是谁在乎?情况。

对于关键应用程序,知道这个问题的答案很重要,因为可能必须针对此类异常情况进行编程。

谢谢

编辑:我想到了一个我在 LINQPad 4 中运行过的简单测试.

测试涉及让线程进入休眠状态,在线程进入休眠状态的大约同一时间启动手动计时器,然后 (a) 将时间提前一小时,然后在第二次测试中,将时间提前倒退两个小时……在这两项测试中, sleep 时间受到影响。

底线:使用 Thread.Sleep,无需担心影响时间的事件。

这是简单的 C# 代码:

Int32   secondsToSleep;
String  seconds; 
Boolean inputOkay;
Console.WriteLine("How many seconds?");
seconds   = Console.ReadLine();
inputOkay = Int32.TryParse(seconds, out secondsToSleep); 
if (inputOkay)
{
    Console.WriteLine("sleeping for {0} second(s)", secondsToSleep);
    Thread.Sleep(secondsToSleep * 1000);
    Console.WriteLine("i am awake!");
}
else Console.WriteLine("invalid input:  [{0}]", seconds);

最佳答案

不,Thread.Sleep 不受影响。内核还专门以 UTC 格式保存时间。时区和夏令时就在上面。

关于c# - .NET Thread.Sleep 是否受 DST(或系统时间)更改的影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12394991/

相关文章:

c# - 如何在 ASP.NET MVC 6 中为不同的环境注册不同的服务?

c# - NotifyPropertyChanged 未触发

c# - eazfuscator 公共(public)成员未混淆

c++ - 添加对 VS 6.0 C++ 帮助的引用!

c# - 访问数组项?

javascript - CSS 绑定(bind)在 Knockout JS 中不起作用

c# - 从 Visual Studio 解决方案中将项目提取为单独的项目

windows - 如何在 Microsoft Visual Studio 2010 上配置 Glib?

windows - 字体文件被系统进程占用

c++ - 什么是应用足迹以及如何计算它?