ger*_*wry 7 .net c# windows kernel clock
我不确定Windows内核如何处理线程计时...
我说的是DST以及影响Windows机器上时间的任何其他事件.
如果内核使用与用于一天中的时间相同的"时钟",那么何时
(a)有人手动更改一天中的时间,或
(b)与时间服务器的某些同步更改一天中的时间,或
(c)夏令时开始或结束,并且系统已配置为响应这两个DST事件,
等等,
睡觉的线程是否受到任何影响?即,内核是否以程序员无需的方式处理此类事件?
注意:对于非关键应用程序,这可能是谁关心的?情况.
对于关键应用,知道这个问题的答案是,因为重要的可能是一个必须为这样的异常情况进行编程.
谢谢
编辑:我想到了一个简单的测试,我在LINQPad 4中运行.
测试包括让线程进入睡眠状态,在线程进入睡眠状态的同时启动手动计时器,然后(a)将时间提前一小时,然后进行第二次测试,将时间移回两小时......在两次测试中,睡眠时间都没有受到影响.
底线:使用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);
Run Code Online (Sandbox Code Playgroud)
不,Thread.Sleep不受影响.内核还以UTC为单位保留时间.时区和DST就在上面.