C#chart运行一会会报”集合已修改;可能无法执行枚举操作。”错误,求教大神!!!
Leo·P 2019-05-09 01:05:12 private void timer1_Tick(object sender, EventArgs e)
{
//实时
Thread thread1 = new Thread(new ThreadStart(alone));
thread1.IsBackground = true;
thread1.Start();
}
private void PHT_Frm_FilmThickness_Load(object sender, EventArgs e)
{
double d = 0;
for (int i = 0; i < 50; i++)
{
d = d + 0.1;
S1[i] = 18 + d;
}
}
void alone()
{
Thread.Sleep(1000);
for (int i = 0; i <= 199; i++)
{
Random ra = new Random();
int r = ra.Next(0, 49);
Thread.Sleep(10);
d1[i] = S1[r];
}
//平均值AVG
label7.Text = "AVG=" + d1.Average().ToString();
//极差R
label6.Text = "R=" + (d1.Max() - d1.Min()).ToString();
//标准差
double sSum2 = 0;
for (int j = 0; j < d1.Length; j++)
{
sSum2 += (d1[j] - d1.Average()) * (d1[j] - d1.Average());
}
label5.Text = "S=" + Math.Sqrt((sSum2 / d1.Length)).ToString();
//清空chart2
for (int i = 0; i < chart2.Series.Count; i++)
{
chart2.Series[i].Points.Clear();
}
Series ss2 = new Series();
chart2.Series.Add(ss2);
ss2.ChartType = SeriesChartType.FastLine;
ChartArea chartArea2 = chart2.ChartAreas[0];
chartArea2.AxisX.Minimum = 0;
chartArea2.AxisX.Maximum = 200;
//chartArea2.AxisY.Minimum = 15;
//chartArea2.AxisY.Maximum = 25d;
chartArea2.AxisY.IsStartedFromZero = false;
//ss.BorderWidth = 2;
ss2.Color = System.Drawing.Color.Red;
for (int y = 0; y <= 199; y++)
{
//输出
ss2.Points.AddXY(y, d1[y]);
//膜厚SV
label8.Text = "SV=" + d1[y].ToString();
}
}