C# serialport 打开串口后,再出现掉口,串口资源如何释放?

流程:打开串口,拔掉USB线,此时查看serialport1.IsOpen是false,但是再次打开串口失败,如何解决?
经查,发现close操作并未生效,串口资源一直被占用

1. 先判断在关闭原先串口 com:

 if (com != null)
 {
    com.Close();
 }

2. 然后重新new,在打开串口:

  com = new System.IO.Ports.SerialPort(strComName);  //strComName串口名
  com.Open();
  // ...设置属性
 //  ...绑定串口接收函数

追问

if (com != null)
{
com.Close();
}
1. 这个是无效的,com != null 肯定是true
2. 如果用的是serialport控件呢

追答

虽然不知道你想做什么, 我想问的是上面的方法你试过了吗,还有问题吗?

追问

已试,无效
因为对应的COM口被占用了(没有成功释放)

追答

一直这么用,刚还试了也没发现有问题,你把你打开串口的整个函数代码发上来看看

温馨提示:内容为网友见解,仅供参考
第1个回答  2018-12-15
先Dispose之后再 GC,稍等一小段时间之后(GC完成)就可以再打开了。
serialPort.Dispose();
SerialPort = new SerialPort();
GC.Collect();
相似回答