有没有一种方法可以在C#中获得日期更改的通知?
我有一个要求,当系统日期更改时,我必须执行某些操作。
我发现SystemsEvent.TimeChanged是您可以连接到的事件,但仅在用户更改时间时才会触发它。
这个问题是否可以通过设置定时任务/计划任务,在午夜运行来更好地处理?
static System.Diagnostics.EventLog log = new EventLog("System");
public Form1()
{
log.EntryWritten += new EntryWrittenEventHandler(log_EntryWritten);
log.EnableRaisingEvents = true;
}
void log_EntryWritten(object sender, EntryWrittenEventArgs e)
{
if (e.Entry.InstanceId == 1 && e.Entry.EntryType == EventLogEntryType.Information)
Console.WriteLine("Test");
}
不确定是否有此类事件,但如果没有,可使用的解决方法是每分钟触发一个计时器,如果两次调用之间的时间差超过5分钟,则可以相当确定时间已经以某种方式被更改。如果您愿意,可以更细粒度地进行操作,每秒触发一次事件,并检查时间差异,如果超过10秒,则可能会更好,但每分钟可能已经足够。
或者可以使用以下方法获取DST信息: TimeZone.CurrentTimeZone.GetDaylightChanges(DateTime.Today.Year)