重复:如何在 .NET / C# 中获取刻度精度的时间戳?
我如何从 Stopwatch.GetTimestamp() 到 DateTime
假设 Stopwatch.IsHighResolution 为真
重复:如何在 .NET / C# 中获取刻度精度的时间戳?
我如何从 Stopwatch.GetTimestamp() 到 DateTime
假设 Stopwatch.IsHighResolution 为真
如果它是一个高分辨率计数器,则不能保证该值与实时有任何关联——例如,它很可能是“计算机启动后的滴答声”。对于非高分辨率计时器,您可以使用new DateTime(Stopwatch.GetTimestamp())
,但这不一定会为高分辨率计时器提供有用的值。(它当然不在我的盒子上。)
你想用这个做什么?的想法Stopwatch
是测量时间间隔。
请记住,如果您尝试跟踪经过的时间,您应该使用:
Stopwatch sw = Stopwatch.StartNew();
//do stuff
sw.Elapsed; //or
sw.ElapsedMilliseconds;
这可以准确地将刻度转换为实时。将刻度转换为 DateTime,然后比较 DateTimes 也可以,但上面更简单。
有些人(包括我自己)错误地使用了这样的代码,并因此而陷入困境:
startTime = Stopwatch.GetTimestamp();
totalTime = (Stopwatch.GetTimestamp() - startTime) / 10000;
//it was assumed 10,000 ticks was a millisecond, incorrectly