我在使用串口的时候出现了两个错误,基本上还属于有几率才能触发,第一个是已关闭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);
}
这就是源代码