相关疑难解决方法(0)

在C#中实现高分辨率DateTime.UtcNow的最佳方法?

我正在尝试实施时间服务,报告时间的准确性超过1毫秒.我认为一个简单的解决方案是进行初始测量并使用StopWatch为其添加增量.问题是这种方法似乎与墙壁时间相差很快.例如,以下代码尝试测量Wall Time和我的高分辨率时钟之间的差异:

public static void Main(string[] args)
{
    System.Diagnostics.Stopwatch s = new System.Diagnostics.Stopwatch();
    DateTime baseDateTime = DateTime.UtcNow;
    s.Start();
    long counter = 0;
    while(true)
    {
        DateTime utcnow = DateTime.UtcNow;
        DateTime hpcutcnow = baseDateTime + s.Elapsed;
        Console.WriteLine(String.Format("{0}) DT:{1} HP:{2} DIFF:{3}", 
            ++counter, utcnow, hpcutcnow, utcnow - hpcutcnow));
        Thread.Sleep(1000);
    }
}
Run Code Online (Sandbox Code Playgroud)

在相当近期的服务器硬件上,我以大约2毫秒/分钟的速度发散.

窗户中是否还有其他时间设施我不知道会更准确?如果没有,是否有更好的方法来创建我应该使用的高分辨率时钟或第三方库?

c# time stopwatch

6
推荐指数
1
解决办法
1623
查看次数

标签 统计

c# ×1

stopwatch ×1

time ×1