在MSChart中使用NaN值导致溢出异常
问题描述:
我正在用MSChart实时绘制应用程序...我需要将一些y值设置为NaN
但我得到一个溢出异常。下面是代码的一部分:在MSChart中使用NaN值导致溢出异常
if (j_ecg < 2569)
{
for (int i = 0; i < 32; i++)
{
this.Invoke((MethodInvoker)delegate
{
ECG.Points.AddXY(puntos_ecg[j_ecg].X,puntos_ecg[j_ecg].Y);
});
j_ecg++;
}
}
else
{
for (int i = 0; i < 32; i++)
{
this.Invoke((MethodInvoker)delegate
{
ECG.Points[ecg_s].SetValueY(puntos_ecg[j_ecg].Y);
for (int j = 1; j < 10; j++){ ECG.Points[ecg_s + j].SetValueY(double.NaN); }
});
j_ecg++;
ecg_s++;
if (ecg_s == 2560) { ecg_s = 0; }
}
}
该调用是为了避免跨线程问题。
任何想法,我怎么能没有得到例外呢?我已尝试在SetValueY
调用之前使用未经检查的关键字,但没有任何更改。
答
首先要尝试的禁用自动缩放,使最小/最大不需要计算:
chart1.ChartAreas["Default"].AxisY.Minimum = <your min>;
chart1.ChartAreas["Default"].AxisY.Maximum = <your max>;
但是你仍然需要有至少一个真正的价值在一个你系列。 我建议你跟踪你的显示值。如果一切都是NaN,请停止绘图!当下一个有效值进入恢复绘图时。
注意:使用零而不是NaN是另一种解决方案。
他们可能应该给你一些比溢出异常更丰富的内容,但是对于你尝试绘制非数字的东西没有任何意义。毕竟,你会在哪里放置'NaN'? –