【发布时间】: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:我看不出您在代码中的哪个位置尝试更新标签。