5

我知道在.NET中有三种计时器类型(请参阅Comparing the Timer Classes in the .NET Framework Class Library)。我选择了一个线程定时器,因为如果主线程很忙,其他类型可能会漂移,我需要它是可靠的。

这个计时器在计时器控制下的工作方式被放在另一个线程上,因此它总是可以在不忙时随着父线程上的工作开始完成而滴答作响。

控制台应用程序中这个计时器的问题是,当计时器在另一个线程上滴答作响时,主线程没有做任何事情,所以应用程序关闭。

我尝试添加一个while true循环,但是当计时器关闭时主线程太忙了。

4

1 回答 1

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
于 2012-12-27T04:12:54.610 回答