Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
时间循环c#while/if_C#_Loops_If Statement_While Loop - Fatal编程技术网

时间循环c#while/if

时间循环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

我需要C#中循环的帮助。循环需要做什么:

xt=50

现在程序需要等待时间(x=50),每秒钟递减一次。如果实际时间为0,程序需要发送我的请求并设置
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是的,您是对的,如果时间间隔太小,这会导致问题。