C#中多線程調用Com接口如何操作
1 回答

慕標5832272
TA貢獻1966條經驗 獲得超4個贊
1)一般的來說,要保證實時性(接收實時性以及發送的實時性),對串口操作采用多線程:一個線程負責接收;另一個線程負責發送。
2)在 .Net類庫中 System.IO.Ports.SerialPort就是采用這種方案:即無論你程序是否啟動額外線程來處理窗口接收與發送,System.IO.Ports.SerialPort類都是按照多線程方式工作!
3)在MSDN關于SerialPort 類的文檔中,請注意SerialPort類有個屬性BaseStream。這個屬性用于顯式異步 I/O 操作,即多線程方式操作串口
4)同樣,在MSDN文檔中關于SerialPort.DataReceived 事件的說明中有這么一句話:“……從 SerialPort 對象接收數據時,將在輔助線程上引發 DataReceived 事件……”,意思很明白:DataReceived事件是在主線程之外的另一個輔助線程上引發的!
====
說了這么多,結論很簡單:
串口通訊絕對適合使用多線程編程,因為System.IO.Ports.SerialPort本身就支持多線程操作;當然,你完全可以繞開System.IO.Ports.SerialPort提供的多線程機制,實現自己的單線程輸入與輸出操作。除非你有你特定的需求,這樣做顯然不是上策。
添加回答
舉報
0/150
提交
取消