如何使用键退出While(true)循环?

时间:2017-12-09 03:49:29

标签: c# .net loops while-loop

所以我有这个看起来像这样的while循环。

bool isTrue = true;
while(isTrue)
{
  //Do work over and over
}

我想知道..我可以添加if语句来检查当前循环中是否按下某个键以突破它吗?没有中断循环所以某种异步任务可能吗?因为它一遍又一遍地自动执行任务。为了这个问题,让我们说它每隔三秒就打印出 " Hello World!" 到控制台

3 个答案:

答案 0 :(得分:1)

使用这样的while循环不是一个好主意。您每隔三分之一秒向控制台写一些内容的建议表明您正在使用Thread.Sleep等待该时间。

使用定时器或其他一些让你做这种事情的图书馆要好得多。我建议使用Microsoft的Reactive Framework。然后你可以这样做:

IDisposable subscription =
    Observable
        .Interval(TimeSpan.FromSeconds(1.0 / 3.0))
        .TakeWhile(_ => !Console.KeyAvailable)
        .Subscribe(_ =>
        {
            Console.WriteLine("Hello World!");
        });

完成工作。如果您想提前停止订阅,请致电subscription.Dispose()

NuGet" System.Reactive"得到你需要的东西。

答案 1 :(得分:0)

你不能简单地将它作为你的while循环中的一个条件。虽然(true和condition){}或者你可以在一个中断的情况下在一个if语句中做一个if语句。

答案 2 :(得分:0)

您可能想要设置一个类,以便您可以使用不同的方法提供共享属性。

.on

你还没有表明你在哪里运行,例如服务器,桌面应用程序,控制台等,但您可能会遇到并需要解决线程安全问题。