c#应用程序在20-30分钟后变慢

本文关键字:20-30分钟 应用程序 | 更新日期: 2023-09-27 18:17:25

我有c#应用程序从串口读取数据。我已经把串行读取处理程序在定时器间隔1秒,因为数据来每1秒on timer I调用

delegate void SetTextCallback(string text);
ReceivedText(serialPort1.ReadExisting());

我也显示接收到的数据在richtextbox只是为了检查它得到适当的数据或不。但在15-20分钟后,应用程序变慢甚至没有响应。

 private void ReceivedText(string text)
 {
        if (this.rtbReceived.InvokeRequired)
        {
            SetTextCallback x = new SetTextCallback(ReceivedText);
            this.Invoke(x, new object[] { (text) });
        }
        else
        {
            this.rtbReceived.Text += text;
            serialdata = text;
            if (serialdata.Length > 0 &&
                serialdata.Length < 42 &&
                serialdata.Contains("#") ||
                serialdata.StartsWith(" #"))
            {
                serialdata.Trim();
                splitdata = serialdata.Split(' ');
                try
                {
                    txtBathTemp.Text = splitdata[3];
                    txtBaroPressure.Text = splitdata[4];
                    double stemp = double.Parse(splitdata[5]);
                    txtSampleTemp.Text = (Math.Round(stemp, 2)).ToString();
                }
                catch (Exception EX)
                { 
                    MessageBox.Show(ex.Message);
                }
            }
        }
    }

c#应用程序在20-30分钟后变慢

this.rtbReceived.Text有可能在一段时间后长大。即使它不使用大量内存,不断地操作String也是低效的。你考虑过用StringBuilder代替吗?