I want to make code that will on the first click start rotorSpeed
stopwatch then on the second click add rotorSpeed.ElapsedMilliseconds
to list
. On the second click resets stopwatch and starts timing again, then on the third click again adds rotorSpeed.ElapsedMilliseconds
to list
.
There are no errors in the code, but when I debug it, I get an error on double average = list.Average();
Stopwatch rotorSpeed = new Stopwatch();
List<double> list = new List<double>();
private void button1_Click(object sender, EventArgs e)
{
i++;
//Getting rotor speed
if (i != 2)
{
if (rotorSpeed.IsRunning)
{
rotorSpeed.Stop();
list.Add(rotorSpeed.ElapsedMilliseconds);
rotorSpeed.Start();
}
else
{
rotorSpeed.Reset();
rotorSpeed.Start();
}
}
double average = list.Average();
textBox2.Text = average.ToString();
}
This is the error I get:
An unhandled exception of type 'System.InvalidOperationException' occurred in >System.Core.dll
Additional information: Sequence contains no elements
Your list
is empty and so calling Average()
on it throwing exception. Change the below line
double average = list.Average();
to
double average = list.Count > 0 ? list.Average() : 0.0;
if (list.Count > 0)
{
textBox2.Text = list.Average().ToString();
}
if (list.Count > 1)
{
double average = list.Average();
textBox2.Text = average.ToString();
rotorSpeed.Stop();
}
This works just fine. Thanks!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With