Dar*_*usz 74 .net c# stopwatch
让我们假设我们使用简单的测量 Stopwatch
public void DoWork()
{
var timer = Stopwatch.StartNew();
// some hard work
Logger.Log("Time elapsed: {0}", timer.Elapsed);
timer.Stop(); // Do I need to call this?
}
Run Code Online (Sandbox Code Playgroud)
根据MSDN:
在典型的秒表场景中,您调用Start方法,然后最终调用Stop方法,然后使用Elapsed属性检查已用时间.
当我不再对定时器实例感兴趣时,我不确定是否应该调用此方法.我应该"清理"使用Stop方法吗?
编辑
请记住,Logger.Log(..)不需要任何费用,因为在记录器记录之前timer.Elapsed会读取它.
Uri*_*iil 63
不,你不需要阻止它.Stop()只是停止追踪经过的时间.它不会释放任何资源
Moh*_*han 30
不,没有必要停止或清理它.
Stopwatch不使用任何非托管资源(如果你想到的话IDisposable).它实际上根本不使用任何资源(当然,除了对象本身使用的内存)!
在.NET(完整的.NET Framework,Mono,.NET Core)的QueryPerformanceCounter()Windows实现中,它只在需要时(打开Start()和Stop()读取时Elapsed)调用Windows API 以检索高分辨率时间戳.
在Mono和.NET Core的Linux实现中,它使用clock_gettime函数来检索单调递增时间值.
对任何对实现细节有好奇心的人:阅读这篇文章.
小智 5
I think Stop is useful if you want to reuse the Elapsed value.
| 归档时间: |
|
| 查看次数: |
15819 次 |
| 最近记录: |