在 C# 中使用秒表定期检查 5 秒

我想在 C# 中定期检查 60 秒。我可以通过定期检查日期来做到这一点,如下所示


但是,当我使用秒表时,秒表会重置回开始位置,而不是从上次停止时继续。


using System;

using System.Diagnostics;

using System.Threading;


namespace StopwatchExample

{

    class Program

    {

        static void Main()

        {

            ////Works

            //DateTime start = DateTime.Now;

            //while (true)

            //{

            //    DateTime current = DateTime.Now;

            //    var diffInSeconds = (current - start).TotalSeconds;

            //    if (diffInSeconds > 5)

            //    {

            //        Console.WriteLine("5 s done!");

            //        break;

            //    }

            //}


            // Does not work

            Stopwatch stopwatch = new Stopwatch();

            stopwatch.Start();

            while (true)

            {

                stopwatch.Stop();

                if (stopwatch.Elapsed.Seconds > 5)

                {

                    Console.WriteLine("5 s done!");

                    break;

                }

                else

                {

                    stopwatch.Start();

                }

            }


            Console.ReadLine();

        }

    }

}


素胚勾勒不出你
浏览 236回答 2
2回答

侃侃尔雅

尝试使用 Timer (System.Timers) 而不是 Stopwatch。设置所需的时间间隔并对 Elapsed 事件执行必要的操作。在这里您可以了解更多信息。例子:public static void Main(){    // Create a timer and set a two second interval.    aTimer = new System.Timers.Timer();    aTimer.Interval = 2000; // 2000ms == 2s    // Hook up the Elapsed event for the timer.     aTimer.Elapsed += OnTimedEvent;    // Have the timer fire repeated events (true is the default)    aTimer.AutoReset = true;    // Start the timer    aTimer.Enabled = true;    Console.WriteLine("Press the Enter key to exit the program.");    Console.ReadLine();}private static void OnTimedEvent(Object source, System.Timers.ElapsedEventArgs e){    Console.WriteLine("The interval has been elapsed");}

吃鸡游戏

正如其他人所说, aTimer可能是更好的解决方案。鉴于您对 的使用Stopwatch,您需要将逻辑更改为:        Stopwatch stopwatch = new Stopwatch();        stopwatch.Start();        while (true)        {            // Check elapsed time w/o stopping/resetting the stopwatch            // May want to include the 5 seconds themselves (>= instead of >)            if (stopwatch.Elapsed.Seconds >= 5)            {                // At least 5 seconds elapsed, restart stopwatch.                stopwatch.Stop();                stopwatch.Start();                Console.WriteLine("5 s done!");                // Not sure about this, if you really want to check "periodically",                // this break makes less sense, because the checking                // logic will stop after the first 5 seconds have elapsed.                break;            }        }
打开App,查看更多内容
随时随地看视频慕课网APP