首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >StopWatch或计时器

StopWatch或计时器
EN

Stack Overflow用户
提问于 2015-04-07 18:24:13
回答 2查看 4.8K关注 0票数 0

在我看来,计时器在显示来自其_Tick()方法的时间时不太准确。我想以分钟/秒为单位显示经过的时间,显示一个过程完成所需的时间长度。我在计时器上用了这个,但发现它的计算是不正确的。这就是为什么我想问StopWatch是更好地显示更准确,还是它们是我应该完全使用的单独控件?

代码语言:javascript
复制
private int timepassed = 0;
private void buttonFourteen_Click(object sender, DragEventArgs e)
{
  timer2.Start();
  var backgroundWorker = new BackgroundWorker();
  backgroundWorker.DoWork += (s, e) =>
  {
    //Lengthy Procedure Goes Here
  };
  backgroundWorker.RunWorkerCompleted += (s, e) =>
  {
    timer2.Stop();
  };
  backgroundWorker.RunWorkerAsync();
}
private void timer2_Tick(object sender, EventArgs e)
{
  timepassed++;
  timedisplay.Text = timepassed.ToString();
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-07 18:44:35

这里有一种方法可以通过秒表来实现这一点,它应该非常准确:

代码语言:javascript
复制
private readonly Stopwatch sw = new Stopwatch();
private readonly System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();

public Form1()
{
    InitializeComponent();
    timer.Tick += timer2_Tick;
}

private void buttonFourteen_Click(object sender, EventArgs e)
{
    sw.Restart();
    timer.Start();
    var backgroundWorker = new BackgroundWorker();

    // Simulating a 10-second process for testing
    backgroundWorker.DoWork += (s, ea) => Thread.Sleep(TimeSpan.FromSeconds(10));

    backgroundWorker.RunWorkerCompleted += (s, ea) => timer.Stop();
    backgroundWorker.RunWorkerAsync();
}

private void timer2_Tick(object sender, EventArgs e)
{
    timedisplay.Text = sw.Elapsed.ToString("g");

    // Or use a custom time format (you can specify precision as well as
    // delimiters between days, hours, minutes, seconds, and milliseconds):
    // timedisplay.Text = sw.Elapsed.ToString(@"dd\.hh\:mm\:ss\.ff");
}
票数 2
EN

Stack Overflow用户

发布于 2015-04-07 18:28:28

System.Diagnostics.StopWatch是跟踪这类事情的典型方法。如果您正在使用VS,并且只是尝试进行性能检查,您还可以分析代码,同时让您很好地了解在每个方法中花费了多少时间。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29498525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档