如何运行无限秒表

How to run stopwatch infinitely

我正在开发一个 windows 表单应用程序,我想无限计算经过的时间,直到我通过在我的代码中使用布尔标志来控制执行流程来告诉它停止。

我仅有的示例代码是 MSDN 提供的代码。但是现在,问题是它只计算 10 秒的时间,这很有意义,因为线程只休眠了 10 秒,然后秒表停止了。

我坚信 Thread.Sleep(10000) 的使用是这里的主要障碍。请在下方找到参考中使用的 MSDN 代码:

 private string CalculateDowntime()
{ 
    Stopwatch stopWatch = new Stopwatch();
        stopWatch.Start();
        Thread.Sleep(10000);
        stopWatch.Stop();
        // Get the elapsed time as a TimeSpan value.
        TimeSpan ts = stopWatch.Elapsed;

        // Format and display the TimeSpan value.
        string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
            ts.Hours, ts.Minutes, ts.Seconds,
            ts.Milliseconds / 10);
        return elapsedTime);;
}

关于如何实现这一点有什么建议吗?

更新: 为了进一步澄清,单击按钮后,我想无限地计算时间(无论是使用秒表还是计时器,我真的不在乎)直到我告诉它停止。 就这些了!

在 class 上将秒表变量设置为 属性。

添加启动/停止秒表的方法。

停止后还可以得到经过的时间

以下是带有两个按钮的 wpf 程序中的示例代码:

当您单击开始按钮时,计时器将启动,当您单击停止按钮时,计时器将停止并显示一个消息框,其中包含经过的毫秒数。

using System.Diagnostics;
using System.Windows;

namespace StopWatch
{
   /// <summary>
   /// Interaction logic for MainWindow.xaml
   /// </summary>
   public partial class MainWindow : Window
   {
      public MainWindow()
      {
         InitializeComponent();
      }

      public Stopwatch MyStopWatch = new Stopwatch();

      private void Start_Button_Click( object sender, RoutedEventArgs e )
      {
         MyStopWatch.Start();
      }

      private void Stop_Button_Click( object sender, RoutedEventArgs e )
      {
         MyStopWatch.Stop();
         MessageBox.Show( MyStopWatch.ElapsedMilliseconds.ToString() );
      }
   }
}