0

我正在使用 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; }
    }
}

调用是为了避免跨线程问题。

知道如何才能避免异常吗?我尝试在SetValueY通话之前使用 unchecked 关键字,但没有任何变化。

4

1 回答 1

0

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

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

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

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

于 2011-12-05T13:50:33.137 回答