Je veux créer un code qui, au premier clic, lance le chronomètre rotorSpeed
, puis au deuxième clic, ajoute rotorSpeed.ElapsedMilliseconds
à list
. Au deuxième clic, le chronomètre est réinitialisé et le chronométrage est repris, puis, au troisième clic, ajoute à nouveau rotorSpeed.ElapsedMilliseconds
à list
. Il n'y a pas d'erreur dans le code, mais lorsque je le débogue, j'obtiens une erreur sur 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();
}
C'est l'erreur que j'obtiens:
Une exception non gérée du type 'System.InvalidOperationException' s'est produite dans> System.Core.dll
Informations complémentaires: la séquence ne contient aucun élément
Votre list
est vide et appelez donc Average()
sur cette exception de projection. Changer la ligne ci-dessous
double average = list.Average();
à
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();
}
Cela fonctionne très bien. Merci!