时间循环c#while/if
我需要C#中循环的帮助。循环需要做什么: xt=50 现在程序需要等待时间(x=50),每秒钟递减一次。如果实际时间为0,程序需要发送我的请求并设置时间循环c#while/if,c#,loops,if-statement,while-loop,C#,Loops,If Statement,While Loop,我需要C#中循环的帮助。循环需要做什么: xt=50 现在程序需要等待时间(x=50),每秒钟递减一次。如果实际时间为0,程序需要发送我的请求并设置xt=50。因此循环可以再次启动,总之,这段代码应该每50秒检查一次,以向服务器发送请求 我的实际代码: while (xt != 0) { xt--; Thread.Sleep(1000); Console.WriteLine ("bla:"+ xt); } if (xt == 0) { Console.Write
xt=50
。因此循环可以再次启动,总之,这段代码应该每50秒检查一次,以向服务器发送请求
我的实际代码:
while (xt != 0)
{
xt--;
Thread.Sleep(1000);
Console.WriteLine ("bla:"+ xt);
}
if (xt == 0)
{
Console.WriteLine("Ich sende!");
//post.SendPost(randomengine.decodeb64(URL2),"Alive");//richtige Daten eintragen! Idiot!
xt = 50;
}
将
if
块置于while
循环中。在while循环中添加Thread.Sleep(1000)
,并将xt=xt
更改为xt=50
,如果检查
您还可以使用System.Threading.Thread.Sleep(50000)
代替注释中提到的while
循环
DispatcherTimer tmr = new DispatcherTimer();
tmr.Interval = TimeSpan.FromSeconds(50);
tmr.Start();
tmr.Tick += (sndr, ex) =>
{
//send request
};
我希望这会有所帮助,每50秒就会触发一次滴答事件。请使用计时器,例如。Net Framework中还有其他计时器,但根据您的问题,这一个似乎是最合适的。您使用的是抽取while循环来计时?您如何保证xt
变量每秒递减一次而不是每秒递减数千次?System.Threading.Thread.Sleep(50000)等待50秒(50000毫秒),这意味着您的整个线程将停止50秒。此代码可以替换为for(int xt=50;xt!=0;--xt){Console.WriteLine(“bla:+xt”);}Console.WriteLine(“ichsende!”)
。这不会再等50秒。@cHao这怎么解决问题?为什么-1?这不是最好的,但仍然是问题的解决方案。我看不出这有什么问题。它可以工作。这不是最漂亮的解决方案,但嘿。我在第一篇文章中更新了代码。if块不会重新启动:(知道为什么吗?@JanisHeller你的if块肯定在你的时间内loop@TimothyGroote:事实上,它是几乎所有情况下最丑陋的解决方案之一。唯一丑陋的解决方案是忙于等待或创建表单(在服务或其他方面)仅出于使用表单计时器的目的。为了正确起见,您可以在启动计时器之前添加勾号
处理程序。(这看起来像是竞争条件,尽管它影响任何事情的可能性非常小。)@cHao是的,您是对的,如果时间间隔太小,这会导致问题。