如何在不退出的情况下让我的控制台应用程序在另一个线程上运行后台进程?

5 .net c# vb.net timer

我知道在.NET中有三种计时器类型(请参阅比较.NET Framework类库中的计时器类).我选择了一个线程计时器,因为如果主线程繁忙,其他类型可能会漂移,我需要这个是可靠的.

此计时器在计时器控制中的工作方式是放在另一个线程上,因此它可以随时在父线程不忙时在工作开始时完成.

控制器应用程序中此计时器的问题是,当计时器正在另一个线程上时,主线程没有执行任何操作,因此应用程序关闭.

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

the*_*eGD 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
Run Code Online (Sandbox Code Playgroud)

  • 这真的有什么作用吗?或者这只是一个漫长的仪式,相当于一个无限循环,其中包含“Sleep()”调用?[Threading.Barrier 的文档](http://msdn.microsoft.com/en-us/library/system.threading.barrier.aspx) 指出 Barrier 类 *“使多个任务能够在算法上协同工作通过多个阶段并行。”*我在这里没有看到“合作”、“并行”或“多个阶段”。 (2认同)