C# 每秒点击一个按钮

C# 每秒点击一个按钮,c#,wpf,C#,Wpf,我想获得按钮的每秒点击次数,并将其保存在\u clicksPerSecond中 我已经得到了用户的点击次数: private void button_Click(object sender, RoutedEventArgs e) { _klicks++; } 因此,如果我点击按钮,点击计数器将上升一,该值将保存在Highscore.txt文件中: writeHighscore = _klicks + Environment.NewLine; File.WriteAllText(Path.C

我想获得按钮的每秒点击次数,并将其保存在
\u clicksPerSecond

我已经得到了用户的点击次数:

private void button_Click(object sender, RoutedEventArgs e)
{
  _klicks++;
}
因此,如果我点击按钮,点击计数器将上升一,该值将保存在
Highscore.txt
文件中:

writeHighscore = _klicks + Environment.NewLine;
File.WriteAllText(Path.Combine(savePath, "Highscore.txt"), writeHighscore);
我需要的是计算用户在一秒钟内做了多少次
\u klicks
。但我不知道如何计算时间,如何计算时间的值。目前,我只得到用户一直制作的
\u klicks


我正在为此使用WPF项目。

您可以使用计时器,每1000毫秒检查一次_klicks的值,将其保存在文件中并将其设置回0

void main(){
    timer = new Timer();
    timer.Interval = 1000; // 1000 miliseconds = 1 second
    timer.Tick += new EventHandler(timer_Tick);
    timer.Enabled = true;
}
void timer_Tick(object sender, EventArgs e)
{
    // Do what you need
    var clicks = _klicks;
    // method to save clicks to the file
    _klicks = 0;
    return clicks;
}

如果您不需要记录单击发生的时间,那么可以使用注释中的建议。

如果您想要平均值,您应该保存平均单击时间段的开始时间,以便可以从结束时间中减去它(可能是
DateTime.Now

然后,您可以计算平均值,如下所示:

clicksPerSecond = _klicks / (_startTime - _endTime).TotalSeconds

这是因为DateTime减法运算符返回时间跨度。

保存开始时间和结束时间。这就是DateTime的诀窍。现在?@bamanow如何用它获得一秒钟?因此,如果用户单击按钮,我将调用DateTime。现在,将时间保存在一个变量中,然后在一秒钟后再次调用它,也保存该按钮,并查看在何处进行了多少次单击?如果这就是诀窍,它比我想象的要容易,o.OYou需要一些列表变量。也许:列出你的点击次数;然后单击lstClicks.Add(DateTime.Now)添加到它。lstClicks.Count将是按钮被单击的次数。对于每秒的点击次数来说,这真的是一个简单的数学问题。值得注意的是,计时器只能保证事件不会在比指定时间更短的时间内触发,但实际间隔可能更长。指定的间隔越短,其他进程、线程、系统滴答时间间隔等的影响就越明显。。。延迟事件代码的执行。