所以我有这个看起来像这样的while循环。
bool isTrue = true;
while(isTrue)
{
//Do work over and over
}
我想知道..我可以添加if语句来检查当前循环中是否按下某个键以突破它吗?没有中断循环所以某种异步任务可能吗?因为它一遍又一遍地自动执行任务。为了这个问题,让我们说它每隔三秒就打印出 " Hello World!" 到控制台
答案 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
你还没有表明你在哪里运行,例如服务器,桌面应用程序,控制台等,但您可能会遇到并需要解决线程安全问题。