0
我從一個串口接收數據,並以多行文本框中顯示的格式顯示所有收到的數據。這是我的串行監視器「txtOutput」。 將數據驗證爲完整消息並過濾掉了幾個字符(在單獨的類中)後,我需要將這些數據顯示到其他文本框(textBox7,2和6)。 出於某種原因,我無法理解,調試10到20秒後,連續發送消息(200-300 ms),我得到一個交叉線程錯誤,「跨線程操作無效:控制從訪問一個線程,而不是它創建的線程「。運行20秒後出現跨線程
這是我的代碼:
串口讀取
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
try
{
SetText(serialPort1.ReadExisting());
}
catch (Exception ex)
{
SetText(ex.ToString());
}
}
代表的setText
delegate void SetTextCallback(string text);
接收串口數據,並闡述
private void SetText(string text)
{
if (this.txtOutput.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(SetText);
this.BeginInvoke(d, new object[] { text });
}
else
{
txtOutput.AppendText(text);
}
string a="", b="", c="";
string invia = text.ToString();
Stripper strp = new Stripper();
strp.Distri(invia, out a, out b, out c);
textBox7.Text = a; // Current
textBox2.Text = b; //Temperature
textBox6.Text = c; //RPM
}
}
這是一個我的第一個應用程序。 我需要更改哪些內容以避免交叉線程錯誤以及我犯的錯誤在哪裏?
賓果!它正在努力,因爲我試圖去獲得它。非常感謝。我的下一個問題是這些文本框中的數據只會在很短的時間內出現。一旦任何文本框出現新值,另一個文本框就會被取消。也許我應該就這個新問題開一個不同的問題。謝謝您的幫助。 – FeliceM
@ FeliceM是的,一個新的問題是適當的。 –