问题描述
我有2个文本框和2个计时器。我首先在timer1中运行它
if not textBox1.text = textBox2.text then
timer2.start
else
msgBox "finished"
end if
但是当textBox1等于textBox2时,timer1会跳过读取,并且始终会出错。 我有机会像运行textBox2一样运行timer2吗? 例如,如果textBox2为3,则timer2运行3次。我可以摆脱textBox1 = textBox2控件,并运行实际上正确的代码,并且不起作用。请帮我。谢谢。
解决方法
我很难理解这个问题,但是我知道您想多次运行一些计时器,然后在x次后继续运行另一个计时器。可以使用类似以下代码(我尚未测试此代码)来实现:
Private WithEvents Timer1,Timer2,Timer3 As New System.Timers.Timer() With {.AutoReset = False}
Private NbTimesRun As New Dictionary(Of System.Timers.Timer,Integer) From {
{Timer1,0},{Timer2,{Timer3,0}
}
Private Sub Timer1_Elapsed(sender as Object,e As EventArgs) Handles Timer1.Elapsed
Debug.Print("Timer1 elapsed")
' Do some stuff here
NbTimesRun(Timer1) += 1
If NbTimesRun(Timer1) == 3 Then
Timer2.Start()
Else
Timer1.Start()
End If
End Sub
Private Sub Timer2_Elapsed(sender as Object,e As EventArgs) Handles Timer2.Elapsed
Debug.Print("Timer2 elapsed")
' Do some stuff here
NbTimesRun(Timer2) += 1
If NbTimesRun(Timer2) == 3 Then
Timer3.Start()
Else
Timer2.Start()
End If
End Sub
等等。
但是,这是一种非常糟糕的设计模式,例如,您应该使用单个计时器,检查其运行次数并根据该次数调用方法。需要处理计时器,因此请覆盖Dispose
并调用TimerX.Dispose()
。