2011-12-01 19 views
0

我正在用MSChart实时绘制应用程序...我需要将一些y值设置为NaN但我得到一个溢出异常。下面是代码的一部分:在MSChart中使用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调用之前使用未经检查的关键字,但没有任何更改。

+1

他们可能应该给你一些比溢出异常更丰富的内容,但是对于你尝试绘制非数字的东西没有任何意义。毕竟,你会在哪里放置'NaN'? –

回答

0

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

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

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

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