小编Ton*_*ony的帖子

C#TimeSpan.FromTicks()不准确?

我一直在使用C#做一个小游戏,而在另一台PC上测试游戏时,我遇到了一些奇怪的时间问题.

我已经在这个游戏中设置了所有内容,根据自上一个游戏循环后的时间进行更新,在大多数情况下应该是这样,但在第二台PC上,一切都很顺利.

我发现问题与使用该FromTicks()方法创建TimeSpan有关.我使用以下代码进行了一些测试:

class Program
{
    static void Main(string[] args)
    {
        System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
        sw.Start();
        System.Threading.Thread.Sleep(TimeSpan.FromSeconds(1));
        sw.Stop();
        TimeSpan t = TimeSpan.FromTicks(sw.ElapsedTicks);
        Console.WriteLine(t.ToString());
        Console.WriteLine(sw.Elapsed.ToString());
        Console.ReadKey();
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的主PC上,我运行了这个程序,得到了以下内容:

    00:00:00.3528353
    00:00:00.9856987

我完全没想到的东西.我认为第二个结果是非常不准确的,但第一个结果很好.

然后我在另一台PC上运行相同的程序,得到了这个:

    00:03:20.6866734
    00:00:00.998287

我很震惊.

我的问题不是我如何解决这个问题,我已经决定使用第二种方法,因为它足够准确......相反,我要求启蒙.

怎么会这样呢?为什么第一个结果如此不准确?为什么这在不同的机器上变化很大?

我检查msdn以防我使用该方法错误,但那里的例子表明我的结果应该是不可能的......

注意:
我认为CMOS电池正在死亡/死亡,这是一个因素吗?

c# performance timespan stopwatch

6
推荐指数
2
解决办法
2543
查看次数

标签 统计

c# ×1

performance ×1

stopwatch ×1

timespan ×1