以前用的T420电脑 Thread.Sleep(1)是延时了1ms。
现在换了个T480竟然 Thread.Sleep(1)是延时了15ms。
于是又换了个老掉牙8年前的XP电脑,也是15ms。
看这个讨论吧:
https://bbs.youkuaiyun.com/topics/391983243?page=1
那么我现在想精确延时1到2个毫秒,咋整呢?
试了N多方法,估计5六种。都不行。
比如
'vb.net 延迟方法 占用少量cpu
Public Declare Function timeGetTime Lib "winmm.dll" () As Long
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Sub Delay(ByVal DlyTime As Double)
Dim Start
Start = timeGetTime
Do While (timeGetTime < Start + CLng(DlyTime))
Windows.Forms.Application.DoEvents()
Sleep(1)
Loop
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Delay(1000) '一秒
TextBox1.Text = "一秒后了"
End Sub
比如那个watch
--------------------------------------------------------------------------------------------------
最后直到现在来看是比较好的方法,就是死延时
TMP = 10000
for 1 TO TMP
END
通过程序动态改变TMP的值来改变延时时间。
然后用程序测量延时时间是多少.
在thinpd I5内核下时间基本稳定,误差基本在几个ms以内。在老掉牙的的XP电脑下误差就更小。