如何在C#winform应用程序中的休眠/睡眠模式下停止计时器?

Tas*_*han 9 c# desktop-application winforms

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

小智 18

您可以处理SystemEvents.PowerModeChanged事件以在计算机挂起时停止计时器并在其恢复时再次启动它.

 SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged;
Run Code Online (Sandbox Code Playgroud)

...

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

  • 有关`SystemEvents的[MSDN页面](http://msdn.microsoft.com/en-us/library/microsoft.win32.systemevents.powermodechanged%28v=VS.90%29.aspx)需要注意的一件重要事项.PowerModeChanged`事件是你需要在处理应用程序时分离事件处理程序:`SystemEvents.PowerModeChanged - = SystemEvents_PowerModeChanged;`. (2认同)