我有两个System.Windows.Forms.Timer,其间隔不同,代码如下
Private Sub myTimer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles myTimer1.Tick
myTimer1.Enabled = False
'Code
myTimer1.Enabled = True
End Sub
Private Sub myTimer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles myTimer2.Tick
myTimer2.Enabled = False
'code
myTimer2.Enabled = True
End Sub
但是有些timer2没有开始工作,直到timer1没有完成,我希望它们并行运行而不等待彼此完成
答案 0 :(得分:0)
使用Timer 和 Thread.Sleep
并不是一个好主意,因为Thread.Sleeps
会阻止当前线程中任何代码的执行。因此,其他计时器无法执行。
使用计时器进行“等待”并省略Thread.Sleep
。
答案 1 :(得分:0)
从你的问题我想你正在使用专为单线程环境设计的 System.Windows.Forms.Timer 。我怀疑当你进入第一个事件时它阻止执行直到你退出呼叫(并且内部的Sleep()真的是一个糟糕的选择)。
System.Timers.Timer 专为多线程执行而设计。这意味着要调用您的事件,Window会使用不同的线程而不会阻塞您的主线程。当然,这导致了从线程而不是UI线程更新用户控件的着名问题。
这篇关于MSDN Magazine的文章解释了.NET中可用的计时器之间的区别。