15秒后停止运行代码

iSi*_*iSi 4 c# datetime

我正在尝试写一些东西,以便在运行15秒后停止运行代码.

我不希望使用While循环或任何类型的循环,并且希望使用IF-ELSE条件,因为它会使我在我的代码中更容易.

我希望在15秒后停止执行的代码部分是FOR循环本身.我们考虑以下代码:

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

如何在运行15秒后停止此循环?

Sha*_*ard 14

您可以在具有当前日期和时间的循环之前分配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");
}
Run Code Online (Sandbox Code Playgroud)

更新:虽然上面通常会起作用,但它不是防弹的,并且可能在某些边缘情况下失败(正如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();
Run Code Online (Sandbox Code Playgroud)