Timer1.Interval = 1000
Timer1.Enabled = True
While Not TT
Application.DoEvents()
End While
Timer1.Enabled = False
TT = False
而timer处理程序如下:
Private Sub timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs)
TT = True
End Sub
然而在调试程序时,我用当运行到Application.DoEvents()时,就一直停滞不前,逐步调试程序一直停留在Application.DoEvents()中,而全速运行时timer.Interval的值一直是1000,TT的值为false,而CPU的使用率达到99%。无论怎样运行,CPU的使用率达到99%,在VS中按暂停后指示运行到Application.DoEvents(),就算是关闭所编的软件,软件没有自动关闭,CPU还是99%,按VS暂停按钮后还是指示运行到Application.DoEvents(),只有按VS的终止调试才停止软件的运行
不明白为什么不能正常运行,请教各位高手,究竟是什么问题,如何解决这个延时问题?
7 个解决方案
#1
延时没有这么干的,呵呵
计算机执行程序就像是一个人在跑步
延时,只须让跑步的人休息一下即可。而不是让这个人原地不停地转圈跑,那多累啊。
延时 很简单的,控制一下当前的线程即可,语法如下:
Threading.Thread.Sleep(延时时间-[毫秒])
例1:延时3秒
Threading.Thread.Sleep(3000)
例2:延时1小时
Threading.Thread.Sleep(3600000)
例3:延时1年
For I as Integer = 1 to 365:Threading.Thread.Sleep(86400000):Next
Threading.Thread.Sleep
计算机执行程序就像是一个人在跑步
延时,只须让跑步的人休息一下即可。而不是让这个人原地不停地转圈跑,那多累啊。
延时 很简单的,控制一下当前的线程即可,语法如下:
Threading.Thread.Sleep(延时时间-[毫秒])
例1:延时3秒
Threading.Thread.Sleep(3000)
例2:延时1小时
Threading.Thread.Sleep(3600000)
例3:延时1年
For I as Integer = 1 to 365:Threading.Thread.Sleep(86400000):Next
Threading.Thread.Sleep
#2
你的代码中其他地方有没有:AddHandler Timer1.Tick, AddressOf Timer1_Tick
或者是你的
Private Sub timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs)
TT = True
End Sub
漏了Handles Timer1.Tick
这样看看:
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
TT = True
End Sub
或者是你的
Private Sub timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs)
TT = True
End Sub
漏了Handles Timer1.Tick
这样看看:
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
TT = True
End Sub
#3
如果仅仅是为了延时的话,因该用rzpc(淡蓝色)的方法比较合适
#4
to rzpc(淡蓝色):
例3:延时1年
For I as Integer = 1 to 365:Threading.Thread.Sleep(86400000):Next
Threading.Thread.Sleep
哈哈,这个例子太cool了
例3:延时1年
For I as Integer = 1 to 365:Threading.Thread.Sleep(86400000):Next
Threading.Thread.Sleep
哈哈,这个例子太cool了
#5
用rzpc(淡蓝色)的方法延时会让主线程失去响应,呈死机状。楼主应该是想“空闲延时”,即延时执行方法,但同时可以进行其他操作。这里最好根据你需求重新设计一下,因为空闲延时会造成不同步问题。
#6
‘结合循环
For i As Int32 = 1 To 20
Application.DoEvents()
Threading.Thread.Sleep(50)
Next
For i As Int32 = 1 To 20
Application.DoEvents()
Threading.Thread.Sleep(50)
Next
#7
mark
#1
延时没有这么干的,呵呵
计算机执行程序就像是一个人在跑步
延时,只须让跑步的人休息一下即可。而不是让这个人原地不停地转圈跑,那多累啊。
延时 很简单的,控制一下当前的线程即可,语法如下:
Threading.Thread.Sleep(延时时间-[毫秒])
例1:延时3秒
Threading.Thread.Sleep(3000)
例2:延时1小时
Threading.Thread.Sleep(3600000)
例3:延时1年
For I as Integer = 1 to 365:Threading.Thread.Sleep(86400000):Next
Threading.Thread.Sleep
计算机执行程序就像是一个人在跑步
延时,只须让跑步的人休息一下即可。而不是让这个人原地不停地转圈跑,那多累啊。
延时 很简单的,控制一下当前的线程即可,语法如下:
Threading.Thread.Sleep(延时时间-[毫秒])
例1:延时3秒
Threading.Thread.Sleep(3000)
例2:延时1小时
Threading.Thread.Sleep(3600000)
例3:延时1年
For I as Integer = 1 to 365:Threading.Thread.Sleep(86400000):Next
Threading.Thread.Sleep
#2
你的代码中其他地方有没有:AddHandler Timer1.Tick, AddressOf Timer1_Tick
或者是你的
Private Sub timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs)
TT = True
End Sub
漏了Handles Timer1.Tick
这样看看:
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
TT = True
End Sub
或者是你的
Private Sub timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs)
TT = True
End Sub
漏了Handles Timer1.Tick
这样看看:
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
TT = True
End Sub
#3
如果仅仅是为了延时的话,因该用rzpc(淡蓝色)的方法比较合适
#4
to rzpc(淡蓝色):
例3:延时1年
For I as Integer = 1 to 365:Threading.Thread.Sleep(86400000):Next
Threading.Thread.Sleep
哈哈,这个例子太cool了
例3:延时1年
For I as Integer = 1 to 365:Threading.Thread.Sleep(86400000):Next
Threading.Thread.Sleep
哈哈,这个例子太cool了
#5
用rzpc(淡蓝色)的方法延时会让主线程失去响应,呈死机状。楼主应该是想“空闲延时”,即延时执行方法,但同时可以进行其他操作。这里最好根据你需求重新设计一下,因为空闲延时会造成不同步问题。
#6
‘结合循环
For i As Int32 = 1 To 20
Application.DoEvents()
Threading.Thread.Sleep(50)
Next
For i As Int32 = 1 To 20
Application.DoEvents()
Threading.Thread.Sleep(50)
Next
#7
mark