【问题标题】:C# Stopwatch stop when clicking on disabled button单击禁用按钮时C#秒表停止
【发布时间】: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


【解决方案1】:

我希望你最终得到类似的结果:

private async void start_btn_Click(object sender, EventArgs e)
{
    stopwatch.Reset();
    react_btn.Enabled = false;
    for (int i = 3; i > 0; --i)
    {
        react_btn.Text = i.ToString();
        await Task.Delay(500);
    }

    react_btn.Text = "Click when red";
    await Task.Delay(random.Next(2000, 5000));
    stopwatch.Start();
    react_btn.BackColor = Color.Red;
    react_btn.Text = "Click!";
    react_btn.Enabled = true;
}

【讨论】:

    猜你喜欢
    • 2020-04-11
    • 1970-01-01
    • 2015-04-25
    • 2015-05-24
    • 1970-01-01
    • 2012-10-17
    • 2013-02-20
    • 2012-12-06
    • 1970-01-01
    相关资源
    最近更新 更多