8

重复:如何在 .NET / C# 中获取刻度精度的时间戳?
我如何从 Stopwatch.GetTimestamp() 到 DateTime

假设 Stopwatch.IsHighResolution 为真

4

2 回答 2

8

如果它是一个高分辨率计数器,则不能保证该值与实时有任何关联——例如,它很可能是“计算机启动后的滴答声”。对于高分辨率计时器,您可以使用new DateTime(Stopwatch.GetTimestamp()),但这不一定会为高分辨率计时器提供有用的值。(它当然不在我的盒子上。)

你想用这个做什么?的想法Stopwatch是测量时间间隔

于 2009-09-17T12:48:46.633 回答
0

请记住,如果您尝试跟踪经过的时间,您应该使用:

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
于 2015-10-16T22:46:05.060 回答