DateTime.Ticks没有100 ns的分辨率?

可能重复:
C#DateTime.Now精度

关于.NET中的高分辨率计时有几个问题,其中声明(如MSDN文档中)DateTime.Ticks的结果为100纳秒。

但在现实生活中似乎并非如此。 如果我运行下面的代码,我希望它生成行,其中每个行的Tick值不同,其中很多行具有相同的Milisecond值。 但事实并非如此 – 滴答值保持不变,直到下一个移位为毫秒值,不会增加时间戳的分辨率。

private static List GetTimeLine(long iterations) { List liste = new List(); for (long i = 0; i <= iterations; i++) { liste.Add(DateTime.Now.Millisecond.ToString() + " - " + DateTime.Now.Ticks.ToString()); } return liste; } static void Main(string[] args) { Console.WriteLine("Generating timeline"); guids = GetTimeLine(10000); File.WriteAllLines(@"C:\Test\GUIDS.TXT", guids); Console.WriteLine("File written - Press ENTER"); Console.ReadLine(); } 

结果输出示例:


867 – 634940160118679615

867 – 634940160118679615

867 – 634940160118679615

867 – 634940160118679615

867 – 634940160118679615

868 – 634940160118689616

868 – 634940160118689616

868 – 634940160118689616

那么在.NET中获得超过毫秒分辨率的方法是什么?

在C#中测量经过时间的最准确方法是使用秒表类。

这使用微处理器的性能计数器,通过调用QueryPerformanceCounter实现 。