【问题标题】:Should I call Stop before reading ElapsedMilliseconds?我应该在阅读 ElapsedMilliseconds 之前调用 Stop 吗?
【发布时间】:2013-03-30 16:29:31
【问题描述】:

我可以在没有调用Stop 的情况下使用ElapsedMilliseconds 在秒表上调用Start 后得到经过的时间吗?我在互联网上进行了很多搜索,但只看到了在Stop 之后调用ElapsedMilliseconds 的示例。这个值是在调用Stop 时填充的还是总是正确的?

【问题讨论】:

    标签: c# stopwatch


    【解决方案1】:

    您可以在 Stopwatch 实例运行或停止时查询属性 Elapsed、ElapsedMilliseconds 和 ElapsedTicks。秒表运行时,经过时间属性稳步增加;当实例停止时,它们保持不变。

    ——来自https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.stopwatch.elapsedmilliseconds#remarks

    【讨论】:

    • 我看到watch.Elapsed.Ticks != watch.ElapsedTicks 的“有趣”(说得好听)的情况,所以秒表内部发生了奇怪的事情。买者自负。我猜我应该怀疑,因为 ElapsedTicks 是一个属性而不是一个方法。虽然我在抱怨,但秒表在多核机器上并不可靠。
    • 语句检索时间两次。如果秒表正在运行,那么它当然可能会在这两次检索之间发生变化。 [如果您在停止手表后看到此内容,那么我将授予您“奇怪”的适用性。
    • @DaleWilson 这两个属性的含义不同;见this question
    • 如果你连续调用 stopwatch.ElapsedMilliseconds 两次,我怀疑你会得到相同的结果,除非你先调用 .Stop()。
    猜你喜欢
    • 1970-01-01
    • 2013-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-28
    • 2015-07-12
    • 1970-01-01
    • 2021-11-08
    相关资源
    最近更新 更多