0

我有从串口读取数据的 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);
                }
            }
        }
    }
4

1 回答 1

0

有机会this.rtbReceived.Text在一段时间后长大。即使它不使用大量内存,不断操作String也没有效率。您是否考虑过StringBuilder改用?

于 2013-06-07T08:37:47.947 回答