我正在研究串口相關的應用程序。在使用DataReceived
事件SerialPort
我需要與接收的字節更新文本框:在終止任務之前正確使用InvokeRequired
private void Connection_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
ledReceive.On = true;
var data = Connection.ReadExisting();
_readBuffer.Add(data);
Invoke(new EventHandler(AddReceivedPacketToTextBox));
}
所以我用Invoke
更新文本框。但是有一個很大的問題。當我嘗試關閉連接時,我的用戶界面被凍結,我認爲這是因爲Invoke
或許正在做些什麼。
一位朋友說我應該使用RequiredInvoke
,但我不知道他真的是什麼。如何關閉連接而不會搞亂調用和UI線程?
這裏是我的關閉方法:
private void DisconnectFromSerialPort()
{
if (Connection != null && Connection.IsOpen)
{
Connection.Close();
_receivedPackets = 0; //reset received packet count
}
}
謝謝回答。不知道爲什麼我有2個相同的問題! –