微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

.NET Thread.Sleep是否受到DST或系统时间更改的影响?

我不确定Windows内核如何处理线程时间…

我正在谈论的DST和任何其他事件,影响一天在Windows上的时间框。

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

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

有没有一种方法来检测是否/当一个进程在C#.Net 2.0中启动另一个进程?

从Perl调用.NET

为什么相同的代码大小会产生不同大小的exe文件

打开Windows资源pipe理器到组合GUID文件

如何仅通过Win32 API实现.NET Process.Exited事件

(a)某人手动改变一天的时间,或者

(b)一些时间服务器的同步改变了一天的时间,或者

(c)夏时制开始或结束,系统已configuration为响应这两个DST事件,

等等 ,

睡觉线程在任何方式受到影响? 即内核是否处理这样的事件,程序员不需要做什么?

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

对于关键应用,知道这个问题的答案是重要的,因为有可能必须编程这样的例外条件。

谢谢

编辑:我想到了一个简单的testing,我在LINQPad 4中运行。

testing包括让线程进入睡眠状态,大约在线程进入睡眠的同时启动一个手动定时器,然后(a)将时间提前一个小时,然后进行第二个testing,将时间移回到两个小时…在这两项testing中,睡眠时间都没有受到影响。

底线:使用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);

你知道任何用于Windows的OpenSSH库吗?

使用.NET代码将系统时间同步到域控制器

C# – 如何使用TaskSchedular类列出特定用户的计划任务

调度员 – 它是如何工作的?

控制台用户界面在.net – 是否有可能?

不, Thread.Sleep不受影响。 内核进一步保持UTC的时间。 时区和DST只是分层的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐