我有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);
}
}
}
}
答案 0 :(得分:0)
this.rtbReceived.Text
有可能在一段时间后成长。即使它没有使用大量内存,不断操纵String
也不是很有效。您是否考虑过使用StringBuilder
?