我正在开发一个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);;
}
关于如何实现这一目标的任何建议?
更新 为了进一步澄清,按钮点击后,我想要无限地计算时间(无论是使用秒表还是计时器,我真的不在乎),直到我告诉它停止。 这就是全部!
答案 0 :(得分:4)
将秒表变量设为您班级的属性。
添加开始/停止秒表的方法。
你也可以在停止后获得经过的时间。
以下是带有两个按钮的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() );
}
}
}