网站策划与建设实训心得,天然气集团有限公司原副总经理,微信网站作用,wordpress 百度seo文章目录简介StopWatch类例子1#xff0c;用作延时例子2#xff0c;用作算法耗时评估博主写作不容易#xff0c;孩子需要您鼓励 万水千山总是情 , 先点个赞行不行
简介
我们在自动化上位机编写过程中#xff0c;上位机的定时应用在很多地方。对于工业上位机程序设计起…
文章目录简介StopWatch类例子1用作延时例子2用作算法耗时评估博主写作不容易孩子需要您鼓励 万水千山总是情 , 先点个赞行不行
简介
我们在自动化上位机编写过程中上位机的定时应用在很多地方。对于工业上位机程序设计起到非常关键的作用比如评估算法耗时动作延时等等。
那我们如何实现这一功能呢C#为我们提供了一个StopWatch定时器我们可以借助此定时器进行定时。
有的人可能会问为什么不用Sleep因为这种延时方法定时精度差并且会卡死线程与程序。最主要的是定时精度差。
StopWatch类
StopWatch类定义如下
namespace System.Diagnostics
{ // // 摘要: // 提供一组方法和属性可用于准确地测量运行时间。 public class Stopwatch { // // 摘要: // 获取以每秒计时周期数表示的计时器频率。此字段为只读。 public static readonly long Frequency; // // 摘要: // 指示计时器是否基于高分辨率性能计数器。此字段为只读。 public static readonly bool IsHighResolution; // // 摘要: // 初始化 System.Diagnostics.Stopwatch 类的新实例。 public Stopwatch(); // // 摘要: // 获取当前实例测量得出的总运行时间。 // // 返回结果: // 一个只读的 System.TimeSpan用于表示当前实例测量得出的总运行时间。 public TimeSpan Elapsed { get; } // // 摘要: // 获取当前实例测量得出的总运行时间以毫秒为单位。 // // 返回结果: // 一个只读长整型表示当前实例测量得出的总毫秒数。 public long ElapsedMilliseconds { get; } // // 摘要: // 获取当前实例测量得出的总运行时间用计时器计时周期表示。 // // 返回结果: // 一个只读长整型表示当前实例测量得出的计时器计时周期的总数。 public long ElapsedTicks { get; } // // 摘要: // 获取一个指示 System.Diagnostics.Stopwatch 计时器是否在运行的值。 // // 返回结果: // 如果 System.Diagnostics.Stopwatch 实例当前正在运行并且在对某个时间间隔的运行时间进行测量则该值为 true否则为 false。 public bool IsRunning { get; } // // 摘要: // 获取计时器机制中的当前最小时间单位数。 // // 返回结果: // 一个长整型表示基础计时器机制中的计时周期计数器值。 public static long GetTimestamp(); // // 摘要: // 对新的 System.Diagnostics.Stopwatch 实例进行初始化将运行时间属性设置为零然后开始测量运行时间。 // // 返回结果: // 刚刚开始测量运行时间的 System.Diagnostics.Stopwatch。 public static Stopwatch StartNew(); // // 摘要: // 停止时间间隔测量并将运行时间重置为零。 public void Reset(); // // 摘要: // 停止时间间隔测量将运行时间重置为零然后开始测量运行时间。 public void Restart(); // // 摘要: // 开始或继续测量某个时间间隔的运行时间。 public void Start(); // // 摘要: // 停止测量某个时间间隔的运行时间。 public void Stop(); }
} 使用StopWatch类注意问题
1、StopWatch类在System.Diagnostics 命名空间下在使用StopWatch的文件中要添加using System.Diagnostics;
2、常用函数 public Stopwatch();public void Reset();public void Start();public void Restart();public void Stop();
3、public void Restart();相当于public void Reset();public void Start();
使用StopWatch定时方法
1、定义一个StopWatch对象
Stopwatch sw new Stopwatch(); 2、开始计时
sw.Start(); 3、重新设置并开始计时
sw.Restart(); 4、结束计时
sw.Stop(); 5、获取运行时间[毫秒]
long times sw.ElapsedMilliseconds; 我们在程序中可以判断运行时间是否达到我们需要的延时时间如果时间达到则程序往下运行。这样就达到定时目的。 在进行算法评估时候我们在算法开始的时候打开定时器程序结束时停止定时器之后获取定时器运行时间即可得到算法运行时间。
Stopwatch 在基础计时器机制中对计时器的计时周期进行计数从而测量运行时间。 如果安装的硬件和操作系统支持高分辨率性能计数器则 Stopwatch 类将使用该计数器来测量运行时间 否则Stopwatch 类将使用系统计数器来测量运行时间。 使用 Frequency 和 IsHighResolution 字段可以确定实现 Stopwatch 计时的精度和分辨率。
例子1用作延时
Stopwatch sw new Stopwatch();
//开始计时
sw.Start();
//某算法
Funcation();
//判断延时是否到达
if (sw.ElapsedMilliseconds10)
{Funcation1();//到达则运行函数1
}
//否则运行函数2
elseFuncation2();//结束计时
sw.Stop(); 也可以使用Switch Case进行延时操作。定时器开始后转到下一步Case进行判断即可。
例子2用作算法耗时评估
Stopwatch sw new Stopwatch();
//开始计时
sw.Start();
//某算法
Function();
//结束计时
sw.Stop();
//获取运行时间[毫秒]
long times sw.ElapsedMilliseconds;
TextBox1.Text 执行算法总共使用了 times 毫秒; 博主简介工业自动化上位机软件工程师、机器视觉算法工程师、运动控制算法工程师。目前从业于智能制造自动化行业。 博主邮箱2296776525qq.com 帮忙点个赞吧。哈哈。