一年前用winform給公司做了一個軟件,用到了電子秤,因此使用了SerialPort來讀串口數據。
做完后,DataReceived事件里偶爾出現“端口被關閉”錯誤,都是在關閉串口后出現。
(出錯位置要么是讀數據ReadLine,要么時清除緩存DiscardInBuffer)
當時研究了半天沒解決,想着影響不大,就直接上線用了;同事反映bug時,我就叫他重啟軟件即可。。。坑了๑乛◡乛๑
直到今天,需要改功能,改完后本地測試時又出現了⊙▂⊙,就順便上網再找下資料。
終於在博客園看到類似這問題的兄弟,而一樓的大大就說了原因:SerialPort.Close就和文件的關閉一樣,在關閉時會flush發送緩沖區的內容。
一下就明白了。。。然后馬上把DiscardInBuffer換到Close前,運行調試,試了十幾次,真的沒再出現了。↖(^ω^)↗
灰常蟹蟹“告訴”大大,解決了一年前的坑!!