向各位大哥求助,小弟使用.net3.5 (c#)做了一个监控应用程序,监控数据的变化。做法是定时0.5秒读一次数据,放入datatable中,datagridview的datasource是datatable,用于列表显示数据,同时,使用mschart曲线动态显示数据。
刚运行,CPU占用率低,定时0.5秒读一次,曲线滚动一次,但当数据量越来越大的时候,比如大于5个小时以上,timer会变慢,大约1s才读一次,曲线滚动一点。监控10小时以上时,CPU占用率达到了50%。
点的位置:有两种方式滚动,
1.chart1.ChartArea[0].AxisX.ScaleView.Position = totalcount - chart1.ChartArea[0].AxisX.ScaleView.size;
2. chart1.ChartArea[0].AxisX.ScaleView.Scroll(ScrollType.Last);
这两种方式都试过,都会出现这种情况。
数据填入方式是:
//新行
DataRow dr = datatable.NewRow();
//读数据
buffer = readData();
//填数据
dr[0] =buffer[0];
chart1.Series["d01"].Points.AddXY(totalcount, dr[0]);
dr[1] =buffer[1];
chart1.Series["d02"].Points.AddXY(totalcount, dr[1]);
......
//增行
datatable.Rows.Add(dr);
------解决思路----------------------
每10分钟清理一下数据吧。实际上你的dr不但需要增加,也需要“删除”。
------解决思路----------------------
还有,如果你的程序需要长时间运行,比如运行1个月
你应该把多余的历史数据保存到数据库里去
而不是都在内存里放着
这样早晚要内存不足的