.NET秒表待机/睡眠/休眠是否可识别?

时间:2011-12-28 13:16:06

标签: .net stopwatch

计算机待机期间System.Diagnostics.Stopwatch计算时间吗?

2 个答案:

答案 0 :(得分:3)

实际上,经过一点点测试后,出现值得计算,但它已经过时了。这就是我所做的:

  1. 写下面的代码
  2. 跑吧,立即将我的电脑置于睡眠模式
  3. 等了10秒钟,然后重新启动了我的电脑
  4. 结果令人震惊Elapsed时间超过4分钟。离开。所以我不会将其用作任何基准。

    这是我使用的代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Diagnostics;
    
    namespace TestingCode
    {
        class Program
        {
            static void Main(string[] args)
            {
                Stopwatch testing = new Stopwatch();
    
                testing.Start();
    
                Console.WriteLine("Press any key to stop timer");
                Console.ReadKey();
    
                testing.Stop();
    
                Console.WriteLine("Elapsed: {0}", testing.Elapsed);
    
                Console.WriteLine("Done!!");
                Console.ReadKey();
            }
        }
    }
    

答案 1 :(得分:3)

是的。

查看Reflector中的代码显示,如果它不是Stopwatch.IsHighResolution,那么它将使用滴答计数(在我的环境中,值为false,因此它将使用DateTime.UtcNow.Ticks ):

public void Start()
{
    if (!this.isRunning)
    {
        this.startTimeStamp = GetTimestamp();
        this.isRunning = true;
    }
}



public static long GetTimestamp()
{
    if (IsHighResolution)
    {
        long num = 0L;
        SafeNativeMethods.QueryPerformanceCounter(out num);
        return num;
    }
    return DateTime.UtcNow.Ticks;
}