Использование значения NaN в MSChart дает исключение переполнения - PullRequest
0 голосов
/ 01 декабря 2011

Я работаю в приложении для составления графиков в реальном времени с помощью 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; }
    }
}

Призыватели призваны избежать проблем с несколькими потоками.

Есть идеи, как я могу это сделать, чтобы не получить исключение? Я пробовал использовать ключевое слово unchecked перед вызовом SetValueY, но ничего не изменилось.

1 Ответ

0 голосов
/ 05 декабря 2011

Первое, что нужно попробовать, это отключить автоматическое масштабирование, так что мин / макс не нужно вычислять:

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

Однако вам все равно нужно иметь хотя бы одно реальное значение в один из вашей серии.Я рекомендую вам отслеживать ваши отображаемые значения.Если все NaN, прекратите заговор!Когда в графике возобновления появляется следующее действительное значение.

Примечание: использование нулей вместо NaN является другим решением.

...