我在使用串口的时候出现了两个错误,基本上还属于有几率才能触发,第一个是已关闭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); }
这就是源代码
------------------------------------------------------------------------------
bjut_樂神
伸手摘星,即使徒劳无功,亦不致满手污泥