替代c#中同一类中的多个while(true)条件

时间:2018-03-24 07:59:15

标签: c# loops while-loop

我正在使用一个应用程序(C#服务),我需要一些功能,如下面的

Main()
    {
        App.A();
        App.B();    
    }
App
    {
        static A()
        {
            While(true)
            {
                // Thread logic comes here
                Thread.Sleep(60000)
            }
        }

        static B()
        {
            While(true)
            {
                // Thread logic comes here
                Thread.Sleep(1000)
            }
        }
    }
  1. 我需要在一个类中执行2个不同的线程逻辑
  2. 两者都需要不同的睡眠时间
  3. 如何在这种情况下继续运行这两种功能?建议我做任何替代方案。

    提前致谢:-)

1 个答案:

答案 0 :(得分:1)

您需要主题 / 任务或使用某种计时器。有很多方法可以做到这一点,但你真的需要了解你想做什么。

然而,这些可能会让你深思熟虑

免责声明,您应该在尝试之前研究这些方法,尤其是任务。

选项1

Task.Run(async () =>
{
    while (true)
    {
        // do the work in the loop
        await Task.Delay(60000);
    }
});

选项2

DispatcherTimer _timer = new DispatcherTimer();

void DoWorkTimer()
{
    _timer.Interval = TimeSpan.FromMilliseconds(200);
    _timer.Tick += _timer_Tick;
    _timer.IsEnabled = true;
}

void _timer_Tick(object sender, EventArgs e)
{
    // do the work in the loop
}