gpt4 book ai didi

c# - 当 Windows 系统时间从 NTP 时间更新更改时是否有事件?

转载 作者:可可西里 更新时间:2023-11-01 10:00:29 24 4
gpt4 key购买 nike

我希望在我的 C# 应用程序中更改 Windows 系统日期/时间时收到通知。我找到了 SystemEvents.TimeChanged事件,MSDN 文档对此说:

Occurs when the user changes the time on the system clock.

如果时钟被 NTP 更改,是否也会触发此事件?或者我可以订阅其他事件吗?

实现细节:

我希望 timer.Elapsed 事件在特定日期/时间触发。我的代码计算计时器使用所需的时间间隔。如果系统时间发生变化,则需要重新评估此计算以计算出新的间隔并更新计时器。

答案总结

感谢所有评论。我将它们总结如下以供将来引用:

  • SystemEvents.TimeChanged 在用户更改以及系统要求与 NTP 服务器重新同步时触发
  • 如果在 Windows 服务中运行,则需要处理消息泵以获取 TimeChanged 事件。这可以通过运行调度程序来实现。
  • NTP 服务器不应用离散的系统日期更改。 NTP 时钟调整是逐渐应用的,考虑到计算出的时钟漂移以及本地时钟与其他 NTP 服务器之间的偏移
  • 对于我的实现,最好定期评估计时器间隔以考虑任何系统时间更改,而不是设置一次间隔并让它触发。

最佳答案

是的,TimeChanged 在您将 Windows 配置为使用 NTP 服务器使您的时间保持最新时以及有人手动更改时间时引发。

这里的一个警告是您必须有一个 UI。 (或启动一个隐藏窗口以获取消息泵)。 IE。您无法在 Windows 服务中获取 TimeChanged 事件。

关于c# - 当 Windows 系统时间从 NTP 时间更新更改时是否有事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12046398/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com