我完全搞不懂这4个。ElapsedMilliseconds (长),ElapsedTicks (长),Elapsed.TotalMilliseconds (双精度)和Elapsed.Milliseconds (整型)有什么区别?
我有一个函数
{
Stopwatch sw = new Stopwatch();
sw.Start();
MyTimeConsumingAction();
sw.Stop();
sw.//what?
}我如何从秒表对象的elapsed属性中获得我的长时间运行进程所消耗的正确时间?
编辑:我尝试过msdn文档,但那里没有任何详细内容。
发布于 2012-01-17 20:20:56
Elapsed.TotalMilliseconds (double)返回从开始到现在所经过的整毫秒和小数毫秒的总数
例如,秒表在此属性中停止1.23456秒将返回1234.56。请参阅MSDN上的TimeSpan.TotalMilliseconds
Elapsed.Milliseconds (int)返回当前秒内的整毫秒数
例如,秒表在1.234秒时将在此属性中返回234.请参阅TimeSpan.Milliseconds
ElapsedTicks (long)返回从秒表开始以来的刻度。
在原始问题的上下文中,与秒表类有关,ElapsedTicks是经过的滴答数。滴答以Stopwatch.Frequency的速率出现,因此,要计算经过的秒数,请计算:numSeconds = stopwatch.ElapsedTicks / Stopwatch.Frequency。
旧答案将滴答定义为100纳秒周期的数量,这在DateTime类的上下文中是正确的,但在秒表类的上下文中是不正确的。请参阅MSDN上的Stopwatch.ElapsedTicks。
ElapsedMilliseconds将四舍五入的数字返回到最接近的整毫秒,因此这可能缺乏Elapsed.TotalMilliseconds属性所能提供的精度。
Elapsed.TotalMilliseconds是一个double,当ElapsedMilliseconds为Int64时,它可以将执行时间返回到部分毫秒。例如,秒表在0.0007毫秒时将返回0,或者1234.56毫秒将在此属性中返回1234。因此,为了精确起见,请始终使用Elapsed.TotalMilliseconds。
有关说明,请参阅Stopwatch.ElapsedMilliseconds on MSDN。
发布于 2012-01-17 20:29:24
反映秒表类表明ElapsedMilliseconds经过了滴答转换(并四舍五入)为毫秒:
public TimeSpan Elapsed
{
get
{
return new TimeSpan(this.GetElapsedDateTimeTicks());
}
}
public long ElapsedMilliseconds
{
get
{
return this.GetElapsedDateTimeTicks() / 10000L;
}
}发布于 2012-01-17 20:24:53
在来自msdn的简短解释中
ElapsedMilliseconds此属性表示向下舍入到最接近的整数毫秒值所用的时间。对于更高精度的测量,请使用Elapsed或ElapsedTicks属性。
ElapsedTicks此属性表示基础计时器机制中经过的刻度数。滴答是秒表计时器可以测量的最小时间单位。使用频率字段将ElapsedTicks值转换为秒数。
Elapsed使用Elapsed属性通过TimeSpan方法和属性检索已用时间值。例如,可以将返回的TimeSpan实例格式化为文本表示形式,或将其传递给需要TimeSpan参数的另一个类。
https://stackoverflow.com/questions/8894425
复制相似问题