首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在待机模式下计时器会发生什么?

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

Stack Overflow用户
提问于 2013-02-12 06:04:01
回答 1查看 3K关注 0票数 14

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

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

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

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-12 06:27:26

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

代码语言:javascript
运行
复制
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开始计数,直到下一个事件。

票数 28
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14821745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档