在MSChart中使用NaN值会产生溢出异常

时间:2011-12-01 16:55:05

标签: mschart nan overflowexception

我正在使用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调用之前尝试使用未经检查的关键字,但没有任何变化。

1 个答案:

答案 0 :(得分:0)

首先要尝试禁用自动缩放,以便不需要计算最小值/最大值:

chart1.ChartAreas["Default"].AxisY.Minimum = <your min>;
chart1.ChartAreas["Default"].AxisY.Maximum = <your max>;

但是,您仍然需要在系列的一个中具有至少一个实际值。 我建议您跟踪显示的值。如果一切都是NaN,请停止绘图!当下一个有效值进入恢复绘图时。

注意:使用零而不是NaN是另一种解决方案。