待机模式下的定时器会怎样? [关闭]
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 自己检查了一下,因为没有人知道正确答案。伟大的!他节省了我的时间)以上是关于待机模式下的定时器会怎样? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章