我知道在.NET中有三种计时器类型(请参阅 Comparing the Timer Classes in the .NET Framework Class Library )。我选择了一个线程计时器,因为如果主线程繁忙,其他类型可能会漂移,我需要这个是可靠的。
此计时器在计时器控制中的工作方式是放在另一个线程上,因此它可以随时在父线程不忙时完成工作开始。
控制台应用程序中此计时器的问题是,当计时器在另一个线程上时,主线程没有执行任何操作,因此应用程序关闭。
我尝试添加while true
循环,但是当计时器关闭时,主线程太忙了。
答案 0 :(得分:4)
我会使用一个等待所有线程完成的屏障。由于有一个主线程和一个计数线程,我有2个参与者。所以它看起来像这样:
Module Module1
Dim x As New Threading.Thread(AddressOf tick)
Dim y As New Threading.Barrier(2)
Sub Main()
x.IsBackground = True
x.Start()
y.SignalAndWait()
End Sub
Sub tick()
Threading.Thread.Sleep(10000)
y.SignalAndWait()
End Sub
End Module