我在 Windows 应用程序中使用 SystemEvents.TimeChanged 事件,它会触发两次。我使用的代码:
using System;
using Microsoft.Win32;
namespace DateTimeTests
{
class Program
{
static void Main(string[] args)
{
SystemEvents.TimeChanged += new EventHandler(SystemEvents_TimeChanged);
Console.WriteLine("Press any key to exit");
Console.ReadKey();
}
static void SystemEvents_TimeChanged(object sender, EventArgs e)
{
Console.WriteLine("Time changed: {0}", DateTime.Now);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试更改 Windows 中的时间,但该事件发生了两次。为什么?
它只是在收到WM_TIMECHANGE 消息时触发该事件。因此,您需要查找另一个程序两次更改时间的原因,或者可能过于热心地更改系统时间并广播此消息。很难推测,因为你没有描述你做了什么来改变时间。
当然,这永远不会成为一个真正的问题。