首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ElapsedTicks、ElapsedMilliseconds、Elapsed.Milliseconds和Elapsed.TotalMilliseconds有什么区别?(C#)

ElapsedTicks、ElapsedMilliseconds、Elapsed.Milliseconds和Elapsed.TotalMilliseconds有什么区别?(C#)
EN

Stack Overflow用户
提问于 2012-01-17 20:15:30
回答 4查看 30.2K关注 0票数 41

我完全搞不懂这4个。ElapsedMilliseconds (长),ElapsedTicks (长),Elapsed.TotalMilliseconds (双精度)和Elapsed.Milliseconds (整型)有什么区别?

我有一个函数

代码语言:javascript
复制
    {
        Stopwatch sw = new Stopwatch();

        sw.Start();
        MyTimeConsumingAction();
        sw.Stop();

        sw.//what?
    }

我如何从秒表对象的elapsed属性中获得我的长时间运行进程所消耗的正确时间?

编辑:我尝试过msdn文档,但那里没有任何详细内容。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 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,当ElapsedMillisecondsInt64时,它可以将执行时间返回到部分毫秒。例如,秒表在0.0007毫秒时将返回0,或者1234.56毫秒将在此属性中返回1234。因此,为了精确起见,请始终使用Elapsed.TotalMilliseconds

有关说明,请参阅Stopwatch.ElapsedMilliseconds on MSDN

票数 56
EN

Stack Overflow用户

发布于 2012-01-17 20:29:24

反映秒表类表明ElapsedMilliseconds经过了滴答转换(并四舍五入)为毫秒:

代码语言:javascript
复制
public TimeSpan Elapsed
{
  get
  {
    return new TimeSpan(this.GetElapsedDateTimeTicks());
  }
}

public long ElapsedMilliseconds
{
  get
  {
    return this.GetElapsedDateTimeTicks() / 10000L;
  }
}
票数 8
EN

Stack Overflow用户

发布于 2012-01-17 20:24:53

在来自msdn的简短解释中

代码语言:javascript
复制
ElapsedMilliseconds

此属性表示向下舍入到最接近的整数毫秒值所用的时间。对于更高精度的测量,请使用Elapsed或ElapsedTicks属性。

代码语言:javascript
复制
ElapsedTicks

此属性表示基础计时器机制中经过的刻度数。滴答是秒表计时器可以测量的最小时间单位。使用频率字段将ElapsedTicks值转换为秒数。

代码语言:javascript
复制
Elapsed

使用Elapsed属性通过TimeSpan方法和属性检索已用时间值。例如,可以将返回的TimeSpan实例格式化为文本表示形式,或将其传递给需要TimeSpan参数的另一个类。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8894425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档