Windows系统时间从NTP时间更新发生变化时是否有事件?

我希望在Windows系统date/时间在我的C#应用​​程序中更改时得到通知。 我发现了SystemEvents.TimeChanged事件,为此MSDN文档说:

在用户更改系统时钟的时间时发生。

如果NTP更改时钟,这个事件是否也会被触发? 还是有另一个我可以订阅的事件?

实施细节:

我想要一个timer.Elapsed事件在特定的date/时间触发。 我的代码计算用于定时器的时间间隔。 如果有系统时间变化,则需要重新计算该计算以计算新的时间间隔并更新计时器。

答案摘要

感谢所有的评论。 我已经在下面进行了总结以供将来参考:

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

Solutions Collecting From Web of "Windows系统时间从NTP时间更新发生变化时是否有事件?"

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

一个警告是,你必须有一个用户界面。 (或者启动一个隐藏窗口来获取消息泵)。 即您不能在Windows服务中获取TimeChanged事件。