【问题标题】:System event timer_changed is not called in Windows serviceWindows 服务中未调用系统事件 timer_changed
【发布时间】:2016-04-22 11:34:00
【问题描述】:

在Windows服务中无法调用该系统事件,如何在Windows服务中调用?

 Microsoft.Win32.SystemEvents.TimeChanged += SystemEvents_TimeChanged;
void SystemEvents_TimeChanged(object sender, EventArgs e)
        {
            AnyMethodExample();            
        }

【问题讨论】:

    标签: c# .net service window


    【解决方案1】:

    仅当消息泵正在运行时才会引发此事件。在一个窗口 服务,除非使用了隐藏表单或消息泵已 手动启动,不会引发此事件。

    https://msdn.microsoft.com/en-us/library/microsoft.win32.systemevents.timechanged(v=vs.110).aspx

    【讨论】:

      【解决方案2】:

      这取决于您在 Windows 服务中调用的位置。您可以发布完整的代码以获得进一步的支持。简单来说,

      class Program
          {
              static void Main(string[] args)
              {
                  SystemEvents.TimeChanged += new EventHandler(SystemEvents_TimeChanged);
                  Console.ReadKey();
              }
      
              static void SystemEvents_TimeChanged(object sender, EventArgs e)
              {
                  Console.WriteLine("TimeChanged: {0}", DateTime.Now);
              }
          }
      

      注意:因为这是一个静态事件,所以在释放应用程序时必须分离事件处理程序,否则会导致内存泄漏。

      【讨论】:

        猜你喜欢
        • 2012-01-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-22
        相关资源
        最近更新 更多