待机模式下的定时器会怎样? [关闭]

Posted

技术标签:

【中文标题】待机模式下的定时器会怎样? [关闭]【英文标题】:What happens to timer in standby mode? [closed] 【发布时间】:2013-01-27 02:55:07 【问题描述】:

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

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

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

1) 计时器从 0 小时开始并立即进入睡眠/休眠状态。然后 PC 在 5 小时唤醒。我的计时器会在接下来的 1 小时还是在接下来的 6 小时之后触发?

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

【问题讨论】:

这是您可以轻松测试的内容。尝试一下并发布答案。 当您尝试使用 5 分钟时的结果是什么。或者你还没试过? @HansPassant 我在提出问题时告诉我,我现在无法测试它。 可能与***.com/questions/8229916/…重复 这是一个有效的问题——尤其是作为参考信息。我看不出它应该关闭的理由。恕我直言,我们宁愿重新打开它。这也可能允许更简洁的答案。 【参考方案1】:

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

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 开始计数直到下一个事件。

【讨论】:

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

以上是关于待机模式下的定时器会怎样? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

怎样取消电脑的定时关机

Android 8.0 AlarmManager 后台定时任务

JS运动

AVR CTC 模式下的 16 位定时器

Timer定时器过段时间后自动停止运行

iOS中待机模式下的蓝牙低功耗?