private void tapButtonClick(object sender, RoutedEventArgs e)
        {
            long elapsed = Stopwatch.ElapsedMilliseconds;

            Task.Run(() => recalculateBeat());
            TickCounts.Add(elapsed);
        }
 private void resetButtonClick(object sender, RoutedEventArgs e)
 {
     TickCounts.Clear();
     if (!string.IsNullOrEmpty(InputBox.Text))
     {
         Period        = 60000 / double.Parse(InputBox.Text);
         InputBox.Text = null;
         updateLabel();
     }
 }
 private void recalculateBeat()
 {
     if (TickCounts.Count > 1)
     {
         var last30      = TickCounts.Reverse <long>().Take(30).ToArray();
         var differences = new long[last30.Count() - 1];
         for (int i = 1; i < last30.Count(); i++)
         {
             differences[i - 1] = last30[i - 1] - last30[i];
         }
         Period = (differences.Average());
     }
 }