在我的应用程序的早期版本中,为了在Windows中捕获时间已更改,我实现了一个IMessageFilter来捕获时间更改时Windows发送的WM_。
我知道现在有了.NET 4(以前我使用.NET 2(带反射)来"ResetTimeZone",我可以直接调用ClearCachedData。
我希望BCL中有一些我可能没有看到的事件可以报告时间已经更改。
如果没有,我将继续使用现有的过滤器。是否存在这样的事件?类似于System.Net.NetworkInformation.NetworkChange.NetworkAddressChanged
Public Function PreFilterMessage(ByRef m As System.Windows.Forms.Message) As Boolean Implements
System.Windows.Forms.IMessageFilter.PreFilterMessage
Select Case m.Msg
Case 30
System.Globalization.CultureInfo.CurrentCulture.ClearCachedData()
'ResetTimeZone()
RaiseEvent TimeChanged(Me, EventArgs.Empty)
Case Else
End Select
End Function
我想这就是您想要的:
SystemEvents.TimeChanged