定时器在待机模式下会发生什么?

Hoo*_*och 11 .net c# sleep timer

我正在使用Timer from Timers命名空间.当PC进入睡眠状态或休眠状态时,计时器会发生什么?

我的计时器设置为6小时延迟.

在这些情况下会发生什么.

1)定时器从0小时开始,立即进入休眠/休眠状态.然后PC在第5小时醒来.我的计时器会在接下来的1小时后或接下来的6小时后点火吗?

2)定时器从0小时开始,立即进入睡眠/休眠状态.然后PC在第7小时醒来.一旦PC唤醒,我的计时器会立即开机吗?或者它会"错过"一次并在接下来的5小时内开火?从PC唤醒时间或之前的"错过"事件开始计算直到下一个事件?

Hoo*_*och 22

好.我问我的朋友,这是他的结果:

23:21:32 : Timer started
23:21:35 : PC Goes Sleep
23:22:50 : PC Wakes
23:22:50 : Timer fired
23:23:50 : Timer fired

using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;

namespace Test
{
    class Program
    {
        static System.Timers.Timer timer;

        static void Main(string[] args)
        {
            timer = new System.Timers.Timer();
            timer.Interval = 60 * 1000;
            timer.AutoReset = true;
            timer.Elapsed += timer_Elapsed;
            timer.Enabled = true;

            Console.WriteLine(String.Format("{0}:{1}:{2} : Timer started", DateTime.Now.ToLocalTime().Hour, DateTime.Now.ToLocalTime().Minute, DateTime.Now.ToLocalTime().Second));

            timer.Start();

            Thread.Sleep(Timeout.Infinite);
        }

        static void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            Console.WriteLine(String.Format("{0}:{1}:{2} : Timer fired", DateTime.Now.ToLocalTime().Hour, DateTime.Now.ToLocalTime().Minute, DateTime.Now.ToLocalTime().Second));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

所以简而言之.睡觉和醒来计时器检查后是否错过了任何事件.如果错过了一个,它将从0开始计数到下一个事件.

  • @ I4V为什么-1 ?? 这是一个很好的问题,Hooch自己检查了,因为没有人知道正确的答案.大!他节省了我的时间) (7认同)
  • -1表示问题但+1表示答案. (3认同)