如何解决我该如何尽可能多地运行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()
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。