问题描述
因为客户需要看到图形的动态趋势,所以我用timer控件,Interval=1,dt数据表中有400多条记录,在tick事件中添加以下代码:i+=1;chart.Series[0].Points.AddXY(dt.rows[i]["列1"],dt.rows[i]["列2"]);这样可以看到图形的动态走势,虽然我设置的是1毫秒在chart中添加一个点,但它的速度太慢了,它不是1毫秒添加一个,大概半秒才添加一个,不知道是什么原因?有没有其它方法?谢谢
解决方案
解决方案二:
不可能是1ms,windows是抢占式系统,不是中断式系统,最快也就是10-20ms
解决方案三:
首先1ms你根本看不出来.另外你这是CS还是BS?如果你是BS都刷新全部重新加载肯定慢..
解决方案四:
我只知道VB中的TIMER,最小精度只有50MS,C#应该也高不到哪里去吧。。。从你的代码来看,影响速度的应该是从数据集中读取数据,而不是在chart中绘图要不事先把400条记录的数据,读取到数组中,然后再去显示,这样应该很快
解决方案五:
chart.Series[0].Points.AddXY是可以设置X轴坐标和Y轴坐标的啊你直接400个点一次性扔进去不就得了并不是1ms扔一个,它X轴就间隔1ms啊
解决方案六:
引用楼主zgiw的回复:
因为客户需要看到图形的动态趋势,所以我用timer控件,Interval=1,dt数据表中有400多条记录,在tick事件中添加以下代码:i+=1;chart.Series[0].Points.AddXY(dt.rows[i]["列1"],dt.rows[i]["列2"]);这样可以看到图形的动态走势,虽然我设置的是1毫秒在chart中添加一个点,但它的速度太慢了,它不是1毫秒添加一个,大概半秒才添加一个,不知道是什么原因?有没有其它方法?谢谢
1ms的刷新实在是太快了,你的数据源都刷不了那么快,所以调这么快意义不大;动态刷新,应该是更新后台的数据集,删除最老的,添加最新的。不知道楼主用的那个控件,zedgraph可以直接加curve,2000点以内1秒肯定加载完了。
解决方案七:
chart.DataSource=dt;chart.Series[0].YValueMembers="operaforce";chart.Series[0].XValueMember="movelenght";chart.DataBind();我用以上代码是可以一直性显示图形的,如图,但客户要求要看到这个动态走势,就是看到这些点一个个加载进去的,当然速度要快,比如3秒之内这个走势图完成加载,这样客户可以很清楚看到这个运行轨迹
解决方案八:
那就用timer,但是只负责把点加载到chart里,而不是每次还要去读数据库.