行云777 2019-08-28 14:41 采纳率: 0%
浏览 792

程序读取设备数据,通过数据建立chart曲线,一定时间后程序越发卡顿,求解决办法?

 public delegate void ChangeZHandle(RapidData RD);
        public event ChangeZHandle ChzlEvent;
private void timer_curve_Tick(object sender, EventArgs e)
        {
            CurveValueUpdate();
            Thread.Sleep(1);
        }
public void CurveValueUpdate()
        {
            try
            {

                //FxData = con.Rapid.GetRapidData("ForceShow", "ForceRout", "X");
                //FyData = con.Rapid.GetRapidData("ForceShow", "ForceRout", "Y");
                //FzData = con.Rapid.GetRapidData("ForceShow", "ForceRout", "Z");
                //X轴曲线显示判断
                if (FxData != null)
                {
                    if (FxData1.Value != FxData.Value)
                    {
                        FxData1 = FxData;
                        if (ChxlEvent != null)
                        {
                            ChxlEvent(FxData1);
                        }

                    }
                }

                //y轴显示判断
                if (FyData != null)
                {
                    if (FyData1.Value != FyData.Value)
                    {
                        FyData1 = FyData;
                        if (ChylEvent != null)
                        {
                            ChylEvent(FyData1);
                        }

                    }
                }

                //Z轴显示判断
                if (FzData != null)
                {
                    if (FzData1.Value != FzData.Value)
                    {
                        FzData1 = FzData;
                        if (ChzlEvent != null)
                        {
                            ChzlEvent(FzData1);
                        }

                    }
                }

            }
            catch (Exception)
            {
                timer_curve.Stop();
                MessageBox.Show("请检查连接的设备信息");

            }


        }
public void FzDataUpdate(RapidData RD)
        {
            txb_Fz.Text = RD.Value.ToString();
            if (ckb_Fz.Checked==true)
            {
                if (ForceZData.Count > CountNum)
                {
                    for (int i = 0; i < num; i++)
                    {
                        ForceZData.Dequeue();
                    }
                }
                for (int i = 0; i < num; i++)
                {
                    ForceZData.Enqueue((Num)RD.Value);
                }
                this.chart1.Series[2].Points.Clear();
                for (int J = 0; J < ForceZData.Count; J++)
                {
                    this.chart1.Series[2].Points.AddXY((J + 1), ForceZData.ElementAt(J));
                }
            }

        }

上面是代码,刚学C#,请各位大佬帮忙看下,谢谢了

  • 写回答

1条回答 默认 最新

  • 椰壳里的海 2021-04-26 05:41
    关注

    楼主,卡顿现象是因为数据量大后,屏幕重绘时的时间延迟造成的,就是显示器速度与cpu速度不一致引起。我这里为此开发了一个曲线控件,可以解决卡顿现象,百度 思润菲咪 可以下载示例程序体验一下,可能对你有用。

    评论

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?