【问题标题】:How to stop a timer during hibernate/ sleep mode in C# winform application?如何在 C# winform 应用程序的休眠/睡眠模式下停止计时器?
【发布时间】:2011-06-02 05:32:47
【问题描述】:

我有一个应用程序在一段时间后执行特定任务(由计时器控制)。但是每当我在休眠后启动PC时,该应用程序就会运行。这意味着计时器在休眠期间保持运行至少一个滴答声。我怎样才能避免这种情况。

【问题讨论】:

  • 为了做到这一点,计时器在您编写的 (c#?) 应用程序中。您启动您的应用程序,它启动计时器。然后,您将您的电脑(假设是 Windows 操作系统)置于睡眠/休眠状态。在超过您的计时器的时间段后,您重新启动计算机并发生应用程序滴答事件。现在您想知道,当您的电脑处于休眠状态时,如何防止计时器“滴答作响”。对吗?

标签: c# winforms desktop-application


【解决方案1】:

您可以处理 SystemEvents.PowerModeChanged 事件以在机器暂停时停止计时器,并在机器恢复时重新启动它。

 SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged;

...

 void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e)
    {
        if (e.Mode == PowerModes.Suspend) PauseTimer();
        else if (e.Mode == PowerModes.Resume) ResumeTimer();
    }

【讨论】:

  • SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged 的​​用途是什么;
  • 这是事件/委托分配。每当事件SystemEvents.PowerModeChanged 被触发时,方法SystemEvents_PowerModeChanged 将被调用,参数e 中的模式被传递给函数。尚未对此进行验证,但似乎是一个合理的解决方案。
  • 对于SystemEvents.PowerModeChanged 事件,从MSDN page 中需要注意的重要一点是,您需要在处理应用程序时分离事件处理程序:SystemEvents.PowerModeChanged -= SystemEvents_PowerModeChanged;
猜你喜欢
  • 2020-09-20
  • 1970-01-01
  • 2011-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-26
  • 1970-01-01
  • 2021-03-10
相关资源
最近更新 更多