Ich möchte Code erstellen, der beim ersten Klick Start rotorSpeed
Stoppuhr und dann beim zweiten Klick rotorSpeed.ElapsedMilliseconds
zu list
hinzugefügt wird. Beim zweiten Klick wird die Stoppuhr zurückgesetzt und das Timing erneut gestartet. Beim dritten Klick wird erneut rotorSpeed.ElapsedMilliseconds
zu list
..__ hinzugefügt. Der Code enthält keine Fehler, aber beim Debuggen erhalte ich einen Fehler bei 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();
}
Dies ist der Fehler, den ich bekomme:
Eine nicht behandelte Ausnahme des Typs 'System.InvalidOperationException' ist in> System.Core.dll aufgetreten
Zusätzliche Informationen: Sequenz enthält keine Elemente
Ihre list
ist leer und ruft daher Average()
für eine Ausnahme auf. Ändern Sie die untere Zeile
double average = list.Average();
zu
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();
}
Das funktioniert gut. Vielen Dank!