C#应用程序在20-30分钟后减速?

时间:2013-06-07 08:03:08

标签: c# serial-port

我有c#应用程序从串口读取数据。我已将序列读取处理程序置于定时器中,间隔为1秒,因为数据每1秒发送一次 在计时器上我打电话

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);
                }
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

this.rtbReceived.Text有可能在一段时间后成长。即使它没有使用大量内存,不断操纵String也不是很有效。您是否考虑过使用StringBuilder