版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。

为了测试计时器运行,我换了一台计算机。

但是这次测试的结果却差强人意,测试了2次,手机秒表时间和程序计次:
1'00.35    3857
1'00.35    3834

前面明明好好的计时器,在另外一台电脑上却不行了。
原电脑是很久的一台电脑,win7系统,这台电脑是前两年配的,win10系统。
按理新电脑处理速度更快,应该比旧电脑更接近准确时间,十分奇怪。
只能推测,新电脑与旧电脑时间片上有差异。设置1ms的间隔,实际在这台电脑对应差不多15ms。
这次为了获得高精度计时器,根据网上的资料,写了以下代码:

Public Class CustomTimerSWPrivate sw As StopwatchPublic Property Interval As IntegerPublic Event Tick()Public Property Enabled As BooleanSub New()Me.Interval = 100Me.Enabled = Falsesw = New Stopwatch()End SubSub New(ByVal Interval As Integer)Me.Interval = IntervalMe.Enabled = Falsesw = New Stopwatch()End SubPublic Sub Start()Me.Enabled = TrueDim th As New Threading.Thread(AddressOf count)th.Start()End SubPrivate Sub count()sw.Start()Dim nowCount As Long = sw.ElapsedMillisecondsDo While Me.EnabledIf (sw.ElapsedMilliseconds - nowCount >= Interval) ThenRaiseEvent Tick()nowCount = sw.ElapsedMillisecondsEnd IfLoopEnd SubPublic Sub [Stop]()Me.Enabled = FalseEnd Sub
End Class

窗体上的调用:

Public Class Form1Dim counter1 As IntegerDim counter2 As IntegerDim counter3 As IntegerDim ct As CustomTimerDim ctsw As CustomTimerSWPrivate Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.LoadMe.CheckForIllegalCrossThreadCalls = Falsecounter1 = 0counter2 = 0counter3 = 0Timer1.Interval = 1ct = New CustomTimer(1)AddHandler ct.Tick, AddressOf CustomTimer_Tickctsw = New CustomTimerSW(1)AddHandler ctsw.Tick, AddressOf CustomTimerSW_TickEnd SubPrivate Sub CustomTimerSW_Tick()counter3 += ctsw.IntervalTextBox3.Text = counter3End SubPrivate Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.ClickIf ctsw.Enabled = True Thenctsw.Stop()Elsectsw.Start()End IfEnd Sub

这次在新电脑上的运行结果:
1'00.43    56641
1'00.16    58004
1'00.22    58175

手机时间换算为毫秒后的结果:
60430    56641
60160    58004
60220    58175

算下来时间上相差2-3秒。应该还算是精度比较高了。

后续:12月18日将程序部分代码修改了一下,在tick时不显示,最后在显示。

    Private Sub CustomTimerSW_Tick()counter3 += ctsw.Interval'TextBox3.Text = counter3End SubPrivate Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.ClickIf ctsw.Enabled = True Thenctsw.Stop()TextBox3.Text = counter3Elsectsw.Start()End IfEnd Sub

手机秒表测试1'00.13,程序运行结果60122。算下来差8毫秒,精度基本接近1ms,毫秒级。

由于.net平台下C#和vb.NET很相似,本文也可以为C#爱好者提供参考。

学习更多vb.net知识,请参看vb.net 教程 目录

vb.net 高精度定时器 1ms级相关推荐

  1. c#实现 微秒级定时器,高精度定时器

    c# 微秒级定时器,高精度定时器 整个代码,封装成类 using System; using System.Runtime.InteropServices;namespace winTest {/// ...

  2. 多媒体高精度定时器介绍

    一:背景 在Windows系统下播放多媒体时,需要去精确控制播放过程,如果用Windows产生的WM_TIMER常规定时器来实现,多媒体画面会出现断断续续的现象,原因在于WM_TIMER只能提供大于等 ...

  3. Linux时间子系统之六:高精度定时器(HRTIMER)的原理和实现

    转自:http://blog.csdn.net/droidphone/article/details/8074892 上一篇文章,我介绍了传统的低分辨率定时器的实现原理.而随着内核的不断演进,大牛们已 ...

  4. PLC高精度定时器(T法测速功能块)

    S7-200 SMART PLC时间间隔指令BGN_ITIME,和CAL_ITIME采用的是系统自带的1ms高精度定时器,PLC里只能调用一次.T法测速和M法测速应用时,都需要高精度时序定时器的支持( ...

  5. python高精度定时器中断_0015 高精度定时器

    0012提过高精度时钟中断,这篇来讲下定时器. 传统操作系统内核一般都有个时间片tick,即相隔一定时间发生一次时钟中断,比如1毫秒,10毫秒,dos时代的1/18.5秒,有高精度时钟之后,我们通过定 ...

  6. 高精度定时器学习(通过官方手册学习)

    高精度定时器学习 功能描述 一般说明 HRTIM引脚和内部信号 时钟 Timer A..E timing units 翻转事件 功能描述 一般说明 HRTIM可以划分为几个模块: •主定时器 •计时单 ...

  7. linux 定时器 jiffies,linux下jiffies定时器和hrtimer高精度定时器(示例代码)

    一.jiffies定时器,HZ=100,精度只能达到10ms. 注:采用jiffies+msecs_to_jiffies(xx ms);可做到ms级,不过精度不够 #include //DO--> ...

  8. Linux 内核定时器使用 二 高精度定时器 hrtimer 的用例

    之前介绍了timer_list内核定时器,它的精度在毫秒级别,再高一点它就无能为力了,所幸内核提供了高精度定时器 hrtimer. 源文件在linux/kernel/hrtimer.c中.接口简单.下 ...

  9. hpet 定时器中断 8259 linux,[OSDEV]编程高精度定时器(HPET)

    高精度定时器HPET和I/O APIC一样,用的是内存映射,映射的地址保存在BIOS提供的ACPI表格中 我们首先来获取这个地址 获取HPET的I/O内存地址 先来看一下文档的30-31页: 关键就是 ...

最新文章

  1. 华为 日志服务器 配置文件,配置日志服务器
  2. vc2005编译ffmpeg以及ffplay
  3. python 多进程 调用模块内函数_Python进程池multiprocessing.Pool的用法
  4. 使用JDBC连接数据库(MySQL)的源代码
  5. tensorflow中创建多个计算图(Graph)
  6. 深入理解JavaScript中的this关键字
  7. 孙长凯sunck_傅里叶变换红外光谱分析NMDA受体单克隆抗体抗-中国科技论文在线.PDF...
  8. JAVA字节流(读写文件)
  9. linux下tail命令的用法,在Linux命令中tail的用法
  10. map mybatis 的字段返回0_mybatis返回map类型数据空值字段不显示(三种解决方法)
  11. 程序员面试中最常见的27个问题,拿走不谢
  12. Chrome开发者调试工具Copy element和Copy OuterHTML区别
  13. View的事件分发机制
  14. 计算机无法识别建行网银盾,建行网银盾无法识别怎么办 几招办法教你轻松解决...
  15. [白话解析] 深入浅出支持向量机(SVM)之核函数
  16. 夏新N820/N821 recovery刷入教程附MT6577专用刷机工具SP_Flash_Tool_v3.1308.0.125
  17. JAVA--多线程管理
  18. bam文件读取_bam格式文件处理大全(一)
  19. IDEA maven 项目 POM文件变灰色或有个虫子(蜘蛛标记)
  20. python eel + vue开发桌面应用

热门文章

  1. 【渝粤题库】陕西师范大学163106旅游心理学 作业【专升本】
  2. 数字技术加持下:金融业与中小微企业形成良性互动
  3. opporeno5可以用鸿蒙系统,OPPOReno5用的什么处理器 OPPOReno5处理器型号
  4. 深耕语音输入12载:讯飞输入法走向万物智能新世界
  5. 最棒的一本管理书《卓有成效的管理者》[美] 彼得·德鲁克
  6. 03 C++------数据结构类型
  7. JavaScript6、7、8、9、10、11新特性
  8. 动态IP代理的应用场景有哪些?
  9. 认真与不认真的分别。
  10. 2022-04-大脑与认知科学-台湾交通大学-黃植懋