解决方案 »

  1.   

    private  class ExSerialPort : SerialPort
        {
          public ExSerialPort(string name)
            : base(name)
          {
          }      protected override void Dispose(bool disposing)
          {        var stream = (Stream)typeof(SerialPort).GetField("internalSerialStream", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(this);        if (stream != null)
            {
              try { stream.Dispose(); }
              catch  { }
            }        base.Dispose(disposing);
          }
        }
      

  2.   

     五楼,请问这个是什么意思?BindingFlags.Instance | BindingFlags.NonPublic  这句话在我代码里报错
      

  3.   

    昨天我试过了,try { stream.Dispose(); }在这里报错了!这个问题我快崩溃了,我试着在1)打开连接的时候重新开启一个线程    拔出后关闭该进程2)蓝牙出入后,捕获当前进程的名称,拔出后kill此进程  可以kill掉但是程序关闭了   3)直接serial.close 报设备不能识别  4)关闭打开时的流   拔掉后关闭仍报错!
      

  4.   

    要检测到这个Com口是否存在,异常拔出,端口不在了,要先关闭,在打开试试
      

  5.   


    从设备管理器上查看蓝牙插入的com口已经不存在了,异常拔出后,再去使用serial.close()会报“设备不能识别”