c# SerialPort使用時出現“已關閉Safe handle”的錯誤

我在使用串口的時候出現了兩個錯誤,基本上還屬於有機率才能觸發,第一個是已關閉Safe handle”的錯誤,第二個是由於線程退出或應用程序請求,已中止 I/O 操作。

造成第一個錯誤的原因是在關閉串口前就關閉了線程,這樣就會出現這樣的錯誤。

不過經過在網上的查找資料發現,先關閉串口後關閉進程會出現第二種錯誤。

發生的原因應該就是串口關閉的時機的問題。在這裏糾結了半天,每次點擊停止監聽串口都會將整個程序退出。

於是經過嘗試發現,可以先將線程掛起,然後在關閉串口,再關閉線程,安裝這樣的順序不會出現錯誤,可能會有個小提示而已。

try
            {
                if (TRecieve.IsAlive)
                {
                    TRecieve.Suspend();
                }
                if (_serialPort != null)
                {
                    if (_serialPort.IsOpen == true)
                    {
                        _serialPort.Close();
                    }
                }
                if (TRecieve != null)
                {
                    TRecieve.Abort();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

這就是源代碼


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章