我完全混淆了这4个。ElapsedMilliseconds(long)、ElapsedTicks(long?
我有一个功能
{
Stopwatch sw = new Stopwatch();
sw.Start();
MyTimeConsumingAction();
sw.Stop();
sw.//what?
}
如何从Stopwatch对象的已用属性(以毫秒为单位)中获得长时间运行的进程所消耗的正确时间?
编辑:我尝试了msdn文档,但没有任何详细信息。。
Elapsed.TotalMilliseconds (double)
返回自启动以来经过的整毫秒和分数毫秒的总数
例如在1.23456秒处停止的秒表将在该属性中返回1234.56。请参阅MSDN 上的TimeSpan.Total Milliseconds
Elapsed.Milliseconds (int)
返回当前第二个中的整毫秒数
例如在1.234秒处的秒表将在该属性中返回234。请参阅TimeSpan.Milliseconds
ElapsedTicks(long)返回自秒表启动以来的刻度。
在与Stopwatch类有关的原始问题的上下文中,ElapsedTicks
是经过的节拍数。滴答声以Stopwatch.Frequency
的速率发生,因此,要计算经过的秒数,请计算:numSeconds = stopwatch.ElapsedTicks / Stopwatch.Frequency
。
旧的答案将ticks定义为100纳秒周期的数量,这在DateTime类的上下文中是正确的,但在Stopwatch类的上下文中将不正确。请参阅MSDN上的Stopwatch.ElapedTicks。
ElapsedMilliseconds
返回一个四舍五入到最接近整毫秒的数字,因此这可能缺乏Elapsed.TotalMilliseconds
属性所能给出的精度。
Elapsed.TotalMilliseconds
是可以将执行时间返回到部分毫秒的double
,而ElapsedMilliseconds
是Int64
。例如0.0007毫秒的秒表将返回0或者1234.56毫秒将返回1234。因此,对于精度,请始终使用Elapsed.TotalMilliseconds
。
有关说明,请参阅MSDN上的Stopwatch.ElapedMilliseconds。
反映Stopwatch类显示ElapsedMilliseconds是转换(并取整)为毫秒的Elapsed ticks:
public TimeSpan Elapsed
{
get
{
return new TimeSpan(this.GetElapsedDateTimeTicks());
}
}
public long ElapsedMilliseconds
{
get
{
return this.GetElapsedDateTimeTicks() / 10000L;
}
}
msdn:的简短解释
ElapsedMilliseconds
此属性表示已用时间,四舍五入到最接近的整毫秒值。对于更高精度的测量,请使用Elapsed或ElapsedTicks属性。
ElapsedTicks
此属性表示基础计时器机制中经过的刻度数。刻度是秒表计时器可以测量的最小时间单位。使用频率字段将ElapsedTicks值转换为秒数。
Elapsed
使用"运行时间"属性可以使用TimeSpan方法和属性检索运行时间值。例如,可以将返回的TimeSpan实例格式化为文本表示形式,或者将其传递给另一个需要TimeSpan参数的类。
Elapsed
就是TimeSpan
。如果您想显示时间,那么只有Elapsed.ToString()
应该执行