我的项目里有一个循环扫描的任务,每次扫描时如果发现A成立则延时一段时间去做B,如果C成立,则延时一段时间去做D.延时不需要很精确,但是不能用sleep,因为AB 和CD的任务是并列的,如果用Sleep会把另外一个任务阻塞掉.也不能用多线程,因为在我的项目中有很多个类似A成立延时做B的任务有很多,我只不过例举两对而已.是不是只能用settimer.在扫描中if A THEN SETTIMER,然后在对应的ontimer中做B.
...全文
92920打赏收藏
VB延时
我的项目里有一个循环扫描的任务,每次扫描时如果发现A成立则延时一段时间去做B,如果C成立,则延时一段时间去做D.延时不需要很精确,但是不能用sleep,因为AB 和CD的任务是并列的,如果用Sleep会把另外一个任务阻塞掉.也不能用多线程,因为在我的项目中有很多个类似A成立延时做B的任务有很多,我只不过例举两对而已.是不是只能用settimer.在扫描中if A THEN SETTIMER,然后在对应的ontimer中做B.
如果你保证各个任务完全独立,不开线程用 timer 也可以,不过你需要考虑下面这些问题对你的任务是否有影响:
1)在用 timer 触发任务 B 开始执行后,另一个 timer 也到点开始执行任务 D,这样任务 B 就被中断了;
2)如果任务 D 的执行时间较长,这时条件 A 成立,再启动 timer,并且也到点开始执行任务 B,这样任务 B 就产生了重入问题。
Public Sub Waiting(ByVal seconds As Integer)
Dim tmpNow As Date = Now
While Now.Subtract(tmpNow).Seconds < seconds
Application.DoEvents()
End While
End Sub
Public Shared Sub Wait(ByVal numseconds As Long)
Dim start As Object, rightnow As Object
Dim HourDiff As Object, MinuteDiff As Object, SecondDiff As Object
Dim TotalMinDiff As Object, TotalSecDiff As Object
timer 就是那个时钟控制 功能
你可以让他不停的刷新
这个事可以控制的 你看一下timer属性,可以随时关闭
Private Sub tirBrush_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tirBrush.Tick
比如 if A运行 Then