C#的Stopwatch 类使用说明
一:Stopwatch 类简单说明
实例Stopwatch 可以测量一个时间间隔的运行时间,或跨多个间隔的已用时间总数。 在典型方案中,调用Start()方法,最后调用Stop()方法,然后使用属性 Elapsed 检查运行时间 。
Stopwatch实例正在运行或已停止;使用 IsRunning 来确定当前的状态 。 使用 Start 开始测量运行时间;使用Stop 测量停止运行。 最后通过查询属性 Elapsed 运行时间 ElapsedMilliseconds 或者 ElapsedTicks的值 。 默认情况下,实例的运行时间值 Stopwatch 等于所有测量时间间隔的总数。 对每次调用都从累积运行时间开始计数;每次调用,结束当前间隔度量,并冻结 Start Stop 累积运行时间值。 而使用 Reset 方法清除现有实例中的累计运行时间 Stopwatch 。通过 Stopwatch 计算基础计时器机制中的计时器计时周期来度量已用时间。 如果已安装的硬件和操作系统支持高分辨率性能计数器,则Stopwatch类使用该计数器测量运行时间。 否则, Stopwatch 类使用系统计时器来测量运行时间。 使用 Frequency 和 IsHighResolution 字段确定计时实现精度和分辨率。
二:Stopwatch 类的字段和属性
字段 | 字段说明 |
---|---|
Frequency | 获取以每秒刻度数表示的计时器频率。 此字段为只读。 |
IsHighResolution | 指示计时器是否基于高分辨率性能计数器。 此字段为只读。 |
属性 | 属性说明 |
---|---|
Elapsed | 获取当前实例测量得出的总运行时间。 |
ElapsedMilliseconds | 获取当前实例测量得出的总运行时间(以毫秒为单位)。 |
ElapsedTicks | 获取当前实例测量得出的总运行时间(用计时器刻度表示)。 |
IsRunning | 获取一个值,该值表示 Stopwatch 计时器是否正在运行。 |
三:Stopwatch 类的方法
方法 | 方法说明 |
---|---|
Equals(Object) | 确定指定对象是否等于当前对象。 |
GetHashCode() | 作为默认哈希函数。 |
GetTimestamp() | 获取计时器机制中的当前刻度数。 |
GetType() | 获取当前实例的 Type。 |
MemberwiseClone() | 创建当前 Object 的浅表副本。 |
Reset() | 停止时间间隔测量,并将运行时间重置为零。 |
Restart() | 停止时间间隔测量,将运行时间重置为零,然后开始测量运行时间。 |
Start() | 开始或继续测量某个时间间隔的运行时间。 |
StartNew() | 初始化新的 Stopwatch 实例,将运行时间属性设置为零,然后开始测量运行时间。 |
Stop() | 停止测量某个时间间隔的运行时间。 |
ToString() | 返回表示当前对象的字符串。 |
1: Stopwatch 类的使用举例一
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
Thread.Sleep(10000);
stopWatch.Stop();
// 获取TimeSpan值形式的运行时间。
TimeSpan ts = stopWatch.Elapsed;
// 格式化并显示TimeSpan值.
string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
ts.Hours, ts.Minutes, ts.Seconds,
ts.Milliseconds / 10);
Console.WriteLine("RunTime " + elapsedTime);
运行结果:
RunTime 00:00:09.99 |
2: Stopwatch 类的使用举例二
if (Stopwatch.IsHighResolution)
{
Console.WriteLine("使用系统的高分辨率性能计数器的计时的操作.");
}
else
{
Console.WriteLine("使用DateTime类的计时操作.");
}
long frequency = Stopwatch.Frequency;
Console.WriteLine("计时器频率,以滴答/秒为单位 = {0}",frequency);
long nanosecPerTick = (1000L * 1000L * 1000L) / frequency;
Console.WriteLine("计时器在{0}纳秒以下范围内准确",nanosecPerTick.ToString());
运行结果:
使用系统的高分辨率性能计数器的计时的操作. 计时器频率,以滴答/秒为单位 = 2343828 计时器在426纳秒以下范围内准确 |
本文含有隐藏内容,请 开通VIP 后查看