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

如何在C#winform应用程序的休眠/休眠模式下停止计时器?,c#,winforms,desktop-application,C#,Winforms,Desktop Application,我有一个应用程序,它在一段时间后执行特定任务(由计时器控制)。但每当我在休眠后启动PC时,应用程序就会运行。这意味着计时器在休眠期间至少运行一次。我怎样才能避免这种情况 您可以处理SystemEvents.PowerModeChanged事件,在机器挂起时停止计时器,在机器恢复时再次启动计时器 SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged; 为了正确实现这一点,计时器位于您编写的(c#?)应用程序中。启动应用程

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

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

 SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged;


为了正确实现这一点,计时器位于您编写的(c#?)应用程序中。启动应用程序,启动计时器。然后将电脑(假定为windows操作系统)置于睡眠/休眠状态。在超过计时器的时间段后,重新启动计算机并发生应用程序勾号事件。现在你想知道,当你的电脑处于休眠状态时,如何防止计时器“滴答作响”。正确?SystemEvents.PowerModeChanged+=SystemEvents\u PowerModeChanged的目的是什么;这是事件/委托分配。每当触发事件
SystemEvents.PowerModeChanged
时,将调用方法
SystemEvents\u PowerModeChanged
,并将参数
e
中的模式传递到函数中。尚未验证这一点,但这似乎是一个合理的解决方案。对于
SystemEvents.PowerModeChanged
事件,需要注意的一点是,在释放应用程序时,需要分离事件处理程序:
SystemEvents.PowerModeChanged-=SystemEvents\u PowerModeChanged
 void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e)
    {
        if (e.Mode == PowerModes.Suspend) PauseTimer();
        else if (e.Mode == PowerModes.Resume) ResumeTimer();
    }