【问题标题】:How to run stopwatch infinitely如何无限运行秒表
【发布时间】:2017-12-27 10:05:35
【问题描述】:

我正在开发一个 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);;
}

关于如何实现这一点的任何建议?

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

【问题讨论】:

  • 如果你想让秒表无限期地运行,那肯定就像不打电话一样简单stopWatch.Stop()
  • 您能否指定何时启动秒表以及您打算如何使用布尔标志来停止它?
  • 当您不休眠线程并且不停止秒表时,您的代码会发生什么?什么不工作?
  • 根据@David 的评论,当我不启动线程并停止秒表、放置断点并单步执行我的代码时,它实际上会无限计算经过的时间,但问题是它没有更新表单上的标签文本。
  • @Harold_Finch:我看不出您在代码中的哪个位置尝试更新标签。

标签: c# winforms stopwatch


【解决方案1】:

让秒表变量成为你班级的一个属性。

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

还可以获取停止后经过的时间。

这是一个带有两个按钮的 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() );
      }
   }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-12
    • 1970-01-01
    • 2020-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多