用C#做的一个数据采集和分析软件 ,设备每隔30毫秒左右会往USB端口发送数据 ,程序利用一个单独的线程对USB端口读取数据,读取到数据后,需要把数据显示在窗体的状态条中,比如读取到的数据有6组,在状态栏就有6个用于显示数据的面板,然后每读到一组数据就马上显示到状态条中,但是 这样的效率不高,CPU的使用效率一直比较高.有没有好的解决方案.使CPU使用率降低 提高效率2 同样是上面的问题 需要在网格中显示数据 我用的是DataGridView 绑定一个DataTable,每接收到一组数据后就更新DataTable中一行值,这样界面DataGridView也更新了数据.为了提高效率DataGridView中默认只有20行数据,当我收到的数据总数超过20行就把当前接收到的数据 显示在最后一行,依次前面的一行数据复制下一行的数据,这样就来回滚动显示,但是 一运行后 CPU的使用率达到了50% ,计算机是双核我更新DataTable的数据方法是
DataTable dt;//为全局网格数据
for(int i=0;i< 20;i++)
{
  dt.Rows[i].ItemArray = dt.Rows[i+1].ItemArray; 
}因为数据30毫秒就要传递上来一次 所以 每30毫秒就执行上面的逻辑 效率很不高,有没有好的解决方案 谢谢.

解决方案 »

  1.   

    30ms采集的数量级有多大?查查应该不是显示的问题,而是USB数据交换的问题。
      

  2.   

    每次采集数据 为24个字节数组 ,数据量不大,就是显示的问题,我把显示的代码注销 然后CPU得使用率就降到 2 3左右.
      

  3.   

    那很奇怪了,你刷新的条目有很多吗?
    我有一个程序,同时访问8个串口(100ms各收发一次),都是RS232-485,每个都连接着N多个AD模块,采集的数据量不少,显示更是满屏幕都在滚动(起码有200个左右的条目在实时刷新),CPU也不高啊。
    (工控机 PIII500,256M)