如何衡量点击之间的时间?

Posted

技术标签:

【中文标题】如何衡量点击之间的时间?【英文标题】:How do I measure time between clicks? 【发布时间】:2021-12-12 02:52:40 【问题描述】:

我一直在为自己制作一个小项目,试图测量两次点击之间的时间。稍后我会将其更改为按键,但我可以自己完成。我需要以毫秒为单位测量时间,而我知道的唯一方法是使用计时器......

    bool clicked = true;
    int time = 0;

    private void button1_Click(object sender, EventArgs e)
    
        if (clicked)
        
            timer1.Start();
            clicked = false;
        
        else
        
            timer1.Stop();
            clicked = true;
        
    

    private void timer1_Tick(object sender, EventArgs e)
    
        time += 10;
        label1.Text = Convert.ToString(time);
    

计时器设置为 10 个滴答的间隔,为了直观地看到我还让计时器显示时间。但是当我测试它时,我添加了另一个间隔为 1000 滴答的计时器,由此我看到了差异。后来我意识到计时器不准确。我开始挖掘,唯一被推荐​​的是秒表,我尝试了这个......

    private void button1_Click(object sender, EventArgs e)
    
        var timer = new Stopwatch();

        if (clicked)
        
            timer.Start();
            clicked = false;
        
        else
        
            timer.Stop();
            TimeSpan timeTaken = timer.Elapsed;
            label1.Text = timeTaken.ToString();
            clicked = true;
        
    

但是每次都会返回“00:00:00”的结果。我该怎么办?

【问题讨论】:

var timer = new Stopwatch(); 这是方法本地声明的。尝试将其移至表单级别。 试试Stopwatch();函数。 【参考方案1】:

我认为您不需要计时器,您只需要计算第一次点击(将它发生在dtPreviousClick 变量中的日期和时间)和第二次点击之间经过的时间。 2 个DateTime 对象之间的区别是Timespan 对象具有名为TotalMilliseconds 的属性,这是您要查找的值。

参考:https://docs.microsoft.com/en-us/dotnet/api/system.timespan.totalmilliseconds

bool clicked = false;
DateTime dtPreviousClick;

private void button1_Click(object sender, EventArgs e)

  if (!clicked)
  
    dtPreviousClick = DateTime.UtcNow;
    clicked = true;
    label1.Text = "awaiting another click....";
    
  
  else
  
    label1.Text = (DateTime.UtcNow - dtPreviousClick).TotalMilliseconds.ToString();
    clicked = false;
  

【讨论】:

以上是关于如何衡量点击之间的时间?的主要内容,如果未能解决你的问题,请参考以下文章

关于如何衡量个人在各自团队的效率和绩效

LR性能测试衡量指标

如何科学衡量广告投放效果?HMS Core分析服务助您科学归因

如何衡量网站上的页面到页面速度?

如何衡量 JWT 的大小?

如何衡量布局性能?