C#中各种计时器用法小结
本文实例总结了C#中各种计时器用法。分享给大家供大家参考,具体如下:
1、使用Stopwatch类(System.Diagnostics.Stopwatch)
Stopwatch实例可以测量一个时间间隔的运行时间,也可以测量多个时间间隔的总运行时间。在典型的Stopwatch方案中,先调用Start方法,然后调用Stop方法,最后使用Elapsed属性检查运行时间。
Stopwatch实例或者在运行,或者已停止;使用IsRunning可以确定Stopwatch的当前状态。使用Start可以开始测量运行时间;使用Stop可以停止测量运行时间。通过属性Elapsed、ElapsedMilliseconds或ElapsedTicks查询运行时间值。当实例正在运行或已停止时,可以查询运行时间属性。运行时间属性在Stopwatch运行期间稳固递增;在该实例停止时保持不变。
默认情况下,Stopwatch实例的运行时间值相当于所有测量的时间间隔的总和。每次调用Start时开始累计运行时间计数;每次调用Stop时结束当前时间间隔测量,并冻结累计运行时间值。使用Reset方法可以清除现有Stopwatch实例中的累计运行时间。
Stopwatch在基础计时器机制中对计时器的刻度进行计数,从而测量运行时间。如果安装的硬件和操作系统支持高分辨率性能的计数器,则Stopwatch类将使用该计数器来测量运行时间;否则,Stopwatch类将使用系统计数器来测量运行时间。使用Frequency和IsHighResolution字段可以确定实现Stopwatch计时的精度和分辨率。
示例
System.Diagnostics.Stopwatchstopwatch=newSystem.Diagnostics.Stopwatch(); stopwatch.Start(); //任务1... stopwatch.Stop(); _result.Text+="任务1用时:"+stopwatch.ElapsedTicks+"。
"; stopwatch.Reset();//若没有Reset,则会把任务1的用时累计进入任务2 stopwatch.Start(); //任务2... stopwatch.Stop(); _result.Text+="任务2用时:"+stopwatch.ElapsedTicks+"。
";
2、基于Windows的标准计时器(System.Windows.Forms.Timer)
Windows计时器是为单线程环境设计的,这个计时器是使用最简单的一种,只要把工具箱中的Timer控件拖到窗体上,然后设置一下事件和间隔时间等属性就可以了。
3、基于服务器的计时器(System.Timers.Timer)
System.Timers.Timer不依赖窗体,是从线程池唤醒线程,是传统的计时器为了在服务器环境上运行而优化后的更新版本。
4、线程计时器(System.Threading.Timer)
线程计时器也不依赖窗体,是一种简单的、轻量级计时器,它使用回调方法而不是使用事件,并由线程池线程提供支持。
5、System.Environment.TickCount
TickCount属性用来获取来自计算机的系统计时器的毫秒计数。
用法:
intstartTime=System.Environment.TickCount; //......任务...... intendTime=System.Environment.TickCount; intrunTime=endTime-startTime;//(注意单位是毫秒哦!)
6、使用TimeSpan类(System.TimeSpan)
TimeSpan对象表示时间间隔或持续时间,按正负天数、小时数、分钟数、秒数以及秒的小数部分进行度量。用于度量持续时间的最大时间单位是天。更大的时间单位(如月和年)的天数不同,因此为保持一致性,时间间隔以天为单位来度量。
TimeSpan对象的值是等于所表示时间间隔的刻度数。一个刻度等于100纳秒,TimeSpan对象的值的范围在MinValue和MaxValue之间。
TimeSpan值可以表示为[-]d.hh:mm:ss.ff,其中减号是可选的,它指示负时间间隔,d分量表示天,hh表示小时(24小时制),mm表示分钟,ss表示秒,而ff为秒的小数部分。即,时间间隔包括整的正负天数、天数和剩余的不足一天的时长,或者只包含不足一天的时长。例如,初始化为1.0e+13刻度的TimeSpan对象的文本表示“11.13:46:40”,即11天,13小时,46分钟和40秒。
用法:
System.DateTimestartTime,endTime; System.TimeSpantime; startTime=System.DateTime.Now; //......任务...... endTime=System.DateTime.Now; time=endTime-startTime; intrunTime=time.Milliseconds;//(以毫秒为单位)
更多关于C#相关内容感兴趣的读者可查看本站专题:《C#日期与时间操作技巧总结》、《C#字符串操作技巧总结》、《C#数组操作技巧总结》、《C#中XML文件操作技巧汇总》、《C#常见控件用法教程》、《WinForm控件用法总结》、《C#数据结构与算法教程》及《C#面向对象程序设计入门教程》
希望本文所述对大家C#程序设计有所帮助。