C#中各种计时器用法小结

发布时间 - 2026-01-11 01:50:26    点击率:

本文实例总结了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.Stopwatch stopwatch = new System.Diagnostics.Stopwatch();
stopwatch.Start();
//任务 1...
stopwatch.Stop();
_result.Text += "<p>任务 1 用时:" + stopwatch.ElapsedTicks + "。</p>";
stopwatch.Reset(); //若没有 Reset,则会把任务 1 的用时累计进入任务 2
stopwatch.Start();
//任务 2...
stopwatch.Stop();
_result.Text += "<p>任务 2 用时:" + stopwatch.ElapsedTicks + "。</p>";

2、基于 Windows 的标准计时器(System.Windows.Forms.Timer)

Windows 计时器是为单线程环境设计的,这个计时器是使用最简单的一种,只要把工具箱中的Timer控件拖到窗体上,然后设置一下事件和间隔时间等属性就可以了。

3、基于服务器的计时器(System.Timers.Timer)

System.Timers.Timer不依赖窗体,是从线程池唤醒线程,是传统的计时器为了在服务器环境上运行而优化后的更新版本。

4、线程计时器(System.Threading.Timer)

线程计时器也不依赖窗体,是一种简单的、轻量级计时器,它使用回调方法而不是使用事件,并由线程池线程提供支持。

5、System.Environment.TickCount

TickCount属性用来获取来自计算机的系统计时器的毫秒计数。

用法:

int startTime=System.Environment.TickCount;
//......任务......
int endTime=System.Environment.TickCount;
int runTime=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.DateTime startTime,endTime;
System.TimeSpan time;
startTime=System.DateTime.Now;
//......任务......
endTime=System.DateTime.Now;
time=endTime-startTime;
int runTime=time.Milliseconds;//(以毫秒为单位)

更多关于C#相关内容感兴趣的读者可查看本站专题:《C#日期与时间操作技巧总结》、《C#字符串操作技巧总结》、《C#数组操作技巧总结》、《C#中XML文件操作技巧汇总》、《C#常见控件用法教程》、《WinForm控件用法总结》、《C#数据结构与算法教程》及《C#面向对象程序设计入门教程》

希望本文所述对大家C#程序设计有所帮助。


# C#  # 计时器  # C#中的三种定时计时器Timer用法介绍  # c# 实现计时器功能  # C#计时器的三种实现方法  # C#线程倒计时器源码分享  # c# 区分几种定时器(timer)  # 详解C#中的定时器Timer类及其垃圾回收机制  # C#中timer定时器用法实例  # c#各种Timer类的区别与用法介绍  # C#四种计时器Timer的区别和用法  # 操作技巧  # 程序设计  # 时长  # 持续时间  # 也不  # 是一种  # 相关内容  # 多个  # 更大  # 环境设计  # 是从  # 感兴趣  # 要把  # 数据结构  # 给大家  # 可选  # 最简单  # 更多关于  # 中对 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: JavaScript如何实现继承_有哪些常用方法  如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环  海南网站制作公司有哪些,海口网是哪家的?  如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环  Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】  如何实现javascript表单验证_正则表达式有哪些实用技巧  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  原生JS实现图片轮播切换效果  网站优化排名时,需要考虑哪些问题呢?  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  如何快速登录WAP自助建站平台?  开心动漫网站制作软件下载,十分开心动画为何停播?  phpredis提高消息队列的实时性方法(推荐)  canvas 画布在主流浏览器中的尺寸限制详细介绍  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  高防服务器租用如何选择配置与防御等级?  PythonWeb开发入门教程_Flask快速构建Web应用  微信h5制作网站有哪些,免费微信H5页面制作工具?  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  SQL查询语句优化的实用方法总结  非常酷的网站设计制作软件,酷培ai教育官方网站?  简单实现jsp分页  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  创业网站制作流程,创业网站可靠吗?  谷歌Google入口永久地址_Google搜索引擎官网首页永久入口  laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法  如何在IIS7中新建站点?详细步骤解析  bing浏览器学术搜索入口_bing学术文献检索地址  绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信  公司网站制作价格怎么算,公司办个官网需要多少钱?  如何在IIS服务器上快速部署高效网站?  零服务器AI建站解决方案:快速部署与云端平台低成本实践  如何在自有机房高效搭建专业网站?  如何获取上海专业网站定制建站电话?  如何在宝塔面板中修改默认建站目录?  Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】  Laravel怎么解决跨域问题_Laravel配置CORS跨域访问  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  如何用已有域名快速搭建网站?  Laravel Fortify是什么,和Jetstream有什么关系  Laravel怎么清理缓存_Laravel optimize clear命令详解  佛山网站制作系统,佛山企业变更地址网上办理步骤?  JS经典正则表达式笔试题汇总  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  如何快速搭建安全的FTP站点?  为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】  Android GridView 滑动条设置一直显示状态(推荐)  百度浏览器如何管理插件 百度浏览器插件管理方法  免费网站制作appp,免费制作app哪个平台好?