C# 高精度计时器Stopwatch
1、实例中可以看到精度可以得到0.1微秒使用double类型,我认为算精度很高的吧,不需要这么高精度可以做运算舍去,或者使用其它的更低精度的属性,如stopWatch.ElapsedMilliseconds等。偶然发现C# 的计时器类Stopwatch,他特别适合测量运行时间,使用简单、计时精确。2、复位reset()和停止Stop()的功能都停止了计时器,但是reset,将时间复位为0了,这里注
·
C# 高精度计时器Stopwatch
引言
偶然发现C# 的计时器类Stopwatch,他特别适合测量运行时间,使用简单、计时精确。它源于命名空间System.Diagnostics,使用时必须using引用。
经典举例
下面用一秒延时的实例来创建一个最简单的计时器实例。
(1)启动和停止方法实例
- 实例化后生成新的计时器
- Start()方法启动计时器
- Stop()方法停止计时器,停止后没有复位,这时可以继续Start继续。
//按键单击
private void button_watch_Click(object sender, EventArgs e)
{
Console.WriteLine("action_spent_time:" + watch(action));
}
//模拟用户函数耗时
private void action()
{
Thread.Sleep(1000);
}
//开始和停止计时器
public static double watch(Action action)
{
//实例化
Stopwatch stopWatch = new Stopwatch();
//启动计时器
stopWatch.Start();
//用户任务
action();
//停止计时器
stopWatch.Stop();
//返回计时器时间
return stopWatch.Elapsed.TotalMilliseconds;
}
打印显示
action_spent_time:1014.7956
(2)复位和重启方法实例
- 实例化new之后,生成新的计时器
- Start()方法启动计时器
- Stop()方法停止计时器,
- Reset()方法复位计时器,时间归零,未开始计时。
- Restart()方法复位,这时计时器从0开始重新计时。
//按键单击
private void button_watch_Click(object sender, EventArgs e)
{
watchResetAndRestart(action);
}
//模拟用户函数耗时
private void action()
{
Thread.Sleep(1000);
}
//复位和重启计时器时器
public void watchResetAndRestart(Action action)
{
//实例化
Stopwatch stopWatch = new Stopwatch();
//启动计时器
stopWatch.Start();
//用户任务
action();
Console.WriteLine("action:"+ stopWatch.Elapsed.TotalMilliseconds);
//复位计时器
stopWatch.Reset();
Console.WriteLine("action reset:" + stopWatch.Elapsed.TotalMilliseconds);
//重启计时器
stopWatch.Restart();
//用户任务
action();
Console.WriteLine("action Restart:" + stopWatch.Elapsed.TotalMilliseconds);
//复位计时器
stopWatch.Reset();
}
}
打印显示:
action:1000.8485
action reset:0
action Restart:1009.2571
小结
是不是觉得这个计时器很简单。小伙伴们可以用起来。
1、实例中可以看到精度可以得到0.1微秒使用double类型,我认为算精度很高的吧,不需要这么高精度可以做运算舍去,或者使用其它的更低精度的属性,如stopWatch.ElapsedMilliseconds等。
2、复位reset()和停止Stop()的功能都停止了计时器,但是reset,将时间复位为0了,这里注意一下就好。
更多推荐
所有评论(0)