[置顶] 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);
            }

这就是源代码


转载于:https://www.cnblogs.com/yueshen-blog/archive/2013/05/10/3182775.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值