我正在寫一個C#應用程序,通過串行通信到微控制器。關於如何處理收到的消息,我有幾個問題。下面是我目前使用的代碼,它收到的消息非常好,但我無法更新表單,或將數據存儲在此方法以外的任何位置(因爲它位於另一個線程中)。串行通信C#
com.DataReceived += new SerialDataReceivedEventHandler(OnReceived);
public void OnReceived(object sender, SerialDataReceivedEventArgs c) // This is started in another thread...
{
com.DiscardOutBuffer();
try
{
test = com.ReadExisting();
MessageBox.Show(test);
}
catch (Exception exc)
{
MessageBox.Show(exc.ToString());
}
}
當我試圖改變形式,或者從這裏這個調用另一個方法是我收到錯誤消息:「跨THEAD操作無效」。
我希望能夠在其他地方顯示信息,甚至更好地將其放入數組中,以便稍後將其存儲爲文件。有什麼辦法可以做到這一點?再次
謝謝!
這完美地工作,謝謝!調用完成的是什麼? – Bubo
@VRKnight它告訴主(GUI)線程執行你的代碼,而不是後臺線程。只有GUI線程才允許修改GUI(例如通過顯示消息框),所以這是必要的。 –