【发布时间】:2021-01-19 13:29:12
【问题描述】:
我在 C# 中测试反应时间时遇到了以下问题。当我单击仍处于禁用状态的较早反应按钮时,秒表会在较早的单击时停止。这是我的代码:
private void start_btn_Click(object sender, EventArgs e)
{
stopwatch.Reset();
for (int i = 3; i > 0; --i)
{
react_btn.Text = i.ToString();
Task.Delay(500).Wait();
react_btn.Invalidate();
react_btn.Enabled = false;
}
react_btn.Text = "Click when red";
Task.Delay(random.Next(2000, 5000)).Wait();
stopwatch.Start();
react_btn.BackColor = Color.Red;
react_btn.Text = "Click!";
react_btn.Enabled = true;
}
private void react_btn_Click(object sender, EventArgs e)
{
if (stopwatch.IsRunning)
{
stopwatch.Stop();
timesTested.Add(stopwatch.ElapsedMilliseconds);
react_btn.BackColor = Color.Yellow;
react_btn.Text = string.Format("Your time {0} ms", stopwatch.ElapsedMilliseconds);
}
}
【问题讨论】:
-
你能把问题说清楚点吗?我不太确定你想做什么,或者什么是真正的错误。
-
所以要开始测试,我点击开始按钮,然后当我点击禁用 3 秒的反应按钮时,我需要尝试并给我 16 毫秒的结果。我正在尝试的是允许在按钮变为红色时测量倒计时后的反应时间。
-
使用的框架相当重要。从
Button.Enabled属性我可以看出您正在使用WinForms。我希望我能赢得测验。您应该正确标记问题。您应该在禁用状态期间取消注册事件处理程序。 -
你没有等待 Task.Delay
标签: c# winforms button timer stopwatch