我正在使用MSChart实时绘制应用程序......我需要将一些y值设置为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; }
}
}
Invokes用于避免交叉线程问题。
我知道如何才能获得异常?我在SetValueY
调用之前尝试使用未经检查的关键字,但没有任何变化。
答案 0 :(得分:0)
首先要尝试禁用自动缩放,以便不需要计算最小值/最大值:
chart1.ChartAreas["Default"].AxisY.Minimum = <your min>;
chart1.ChartAreas["Default"].AxisY.Maximum = <your max>;
但是,您仍然需要在系列的一个中具有至少一个实际值。 我建议您跟踪显示的值。如果一切都是NaN,请停止绘图!当下一个有效值进入恢复绘图时。
注意:使用零而不是NaN是另一种解决方案。