簡體   English   中英

15秒后停止運行代碼

[英]Stop running the code after 15 seconds

我正在嘗試寫一些東西,以便在運行15秒后停止運行代碼。

我不希望使用While循環或任何類型的循環,並希望使用IF-ELSE條件,因為它會使我在我的代碼中更容易。

我希望在15秒后停止執行的代碼部分是FOR循環本身。 我們考慮以下代碼:

for (int i = 1; i < 100000; i++)
{
    Console.WriteLine("This is test no. "+ i+ "\n");
}

如何在運行15秒后停止此循環?

您可以在具有當前日期和時間的循環之前分配DateTime變量,然后在每個循環迭代中只檢查是否已經過了15秒:

DateTime start = DateTime.Now;
for (int i = 1; i < 100000; i++)
{
    if ((DateTime.Now - start).TotalSeconds >= 15)
        break;
    Console.WriteLine("This is test no. "+ i+ "\n");
}

更新:雖然上面通常會起作用,但它不是防彈,並且可能在某些邊緣情況下失敗(正如Servy 在評論中指出的那樣),導致無限循環。 更好的做法是使用Stopwatch類,它是System.Diagnostics命名空間的一部分:

Stopwatch watch = new Stopwatch();
watch.Start();
for (int i = 1; i < 100000; i++)
{
    if (watch.Elapsed.TotalMilliseconds >= 500)
        break;
    Console.WriteLine("This is test no. " + i + "\n");
}
watch.Stop();

我是從我的舊帖子中發布我的答案,因為它在這里更相關,

我認為你需要測量時間並在特定時間說“15秒”后停止代碼, StopWatch類可以幫助你。

// Create new stopwatch instance
Stopwatch stopwatch = new Stopwatch();
// start stopwatch
stopwatch.Start();
// Stop the stopwatch
stopwatch.Stop();
// Write result
Console.WriteLine("Time elapsed: {0}",stopwatch.Elapsed);
// you can check for Elapsed property when its greater than 15 seconds 
//then stop the code

Elapsed屬性返回TimeSpan實例,你會做這樣的事情。

TimeSpan timeGone = stopwatch.Elapsed;

為了適應您的場景,您可以執行類似的操作

Stopwatch stopwatch = new Stopwatch();
TimeSpan timeGone;
// Use TimeSpan constructor to specify:
// ... Days, hours, minutes, seconds, milliseconds.
// ... The TimeSpan returned has those values.
TimeSpan RequiredTimeLine = new TimeSpan(0, 0, 0, 15, 0);//set to 15 sec

While ( timeGone.Seconds < RequiredTimeLine.Seconds )
{
    stopwatch.Start();
    Start();
    timeGone = stopwatch.Elapsed;
}
Stop();//your method which will stop listening

一些有用的鏈接
MSDN StopWatch

更好的是你可以使用下面的代碼,這將有助於提高性能。

System.Threading.Thread.Sleep(TimeSpan.FromSeconds(2));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM