C# 在待机模式下定时器会发生什么情况?

C# 在待机模式下定时器会发生什么情况?,c#,.net,timer,sleep,C#,.net,Timer,Sleep,我正在使用计时器命名空间中的计时器。 当电脑进入睡眠或休眠状态时,计时器会发生什么变化 我已将计时器设置为延迟6小时 在这些情况下会发生什么 1) 计时器从0小时开始,立即进入睡眠/休眠状态。然后PC在第5小时醒来。我的计时器会在接下来的1小时后启动还是在接下来的6小时后启动 2) 计时器从0小时开始,立即进入睡眠/休眠状态。然后电脑在7点醒来。我的计时器会在电脑一醒来就启动,还是会“错过”一次并在未来5小时内启动?它会从电脑唤醒时或从上一个“错过”事件开始计数到下一个事件吗?确定。 我问我的朋

我正在使用计时器命名空间中的计时器。 当电脑进入睡眠或休眠状态时,计时器会发生什么变化

我已将计时器设置为延迟6小时

在这些情况下会发生什么

1) 计时器从0小时开始,立即进入睡眠/休眠状态。然后PC在第5小时醒来。我的计时器会在接下来的1小时后启动还是在接下来的6小时后启动

2) 计时器从0小时开始,立即进入睡眠/休眠状态。然后电脑在7点醒来。我的计时器会在电脑一醒来就启动,还是会“错过”一次并在未来5小时内启动?它会从电脑唤醒时或从上一个“错过”事件开始计数到下一个事件吗?

确定。 我问我的朋友,这是他的结果:

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));
        }
    }
}
简而言之。
睡眠和醒来后,计时器检查是否错过任何事件。如果它错过了一个,它将开始计数,直到从0开始的下一个事件。

这是您可以自己轻松测试的东西。试一试,然后贴出答案。比如说,你试了5分钟,结果是什么。“还是你还没试过?”汉帕桑在提出我的问题时,我告诉他,我现在无法测试它。这可能是一个有效的问题,尤其是作为参考信息。我看不出有什么理由关闭它。我想我们应该重新打开它。这也可能允许更简洁的答案。问题-1,答案+1。@I4V为什么-1??这是一个很好的问题,霍奇亲自检查了一下,因为没有人知道正确的答案。伟大的他节省了我的时间)