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; }
    }
}

Invokes はクロス スレッドの問題を回避するためにあります。

例外を取得しないためにどうすればよいか考えていますか? 呼び出しの直前に unchecked キーワードを使用してみましたSetValueYが、何も変わりません。

4

1 に答える 1

0

最初に試すことは、自動スケーリングを無効にして、最小/最大を計算する必要がないようにすることです。

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

ただし、シリーズの1つに少なくとも1つの実際の値が必要です。表示された値を追跡することをお勧めします。すべてがNaNの場合は、プロットを停止してください。次の有効な値が再開プロットに来るとき。

注:NaNの代わりにゼロを使用することも別の解決策です。

于 2011-12-05T13:50:33.137 に答える