我该如何尽可能多地运行Timer? [Vb.Net]

问题描述

我有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()