【发布时间】:2018-11-24 09:45:35
【问题描述】:
在我的 WPF 程序中有一个带有此代码隐藏的按钮:
**Outside the Click event:**
bool started = false;
**In the Click Event:**
if (started == false)
{
started = true;
btnStart.Content = "Stop";
//---------Clock Code-------------
stopwatch.Start();
}
else
{
started = false;
btnStart.Content = "Start";
//---------Clock Code------------
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);
tbDuration.Text = elapsedTime;
}
但是如果我启动程序并按下按钮,它总是显示 0。 我无法调试它,因为 Visual Studio 崩溃了...
我做错了什么?
或者你有更好的方法来做到这一点? 我只是想测量两次按下之间的时间并将其输出到文本框。
我还希望在文本框中实时监控时间。
谢谢
【问题讨论】:
-
如果此代码在您的按钮的 Click() 事件处理程序中,则
started == false条件将始终运行,因为您在之前声明并设置了started变量 - 这也意味着时刻如果您离开该方法,变量就会超出范围,因此您下次进入该方法时不会保留任何状态信息。 -
你需要使用 backgroundjob 来保持 ui 更新
-
@slugster 谢谢你的回答,开始的地方放错了。它在点击事件之外。
-
I can't debug it, because Visual Studio crashes...这是您的第一个问题,您需要弄清楚这一点,当您需要做的只是调试应用程序时,您不能一直问简单的问题。我认为与其编写程序,不如先弄清楚 Visual Studio 崩溃的原因 -
另外,如果您的秒表不是实例成员,那么您将无法测量时间