.net SerialPort Close()导致程序被挂起!
private SerialPort Sp = new SerialPort();
         public delegate void HandleInterfaceUpdataDelegate(string text);
         private HandleInterfaceUpdataDelegate interfaceUpdataHandle;
Sp.Close();
             Sp.PortName = Common.BaseClass.strCom;
             Sp.BaudRate = 9600;
             Sp.Parity = Parity.None;
             Sp.RtsEnable = false;
             Sp.DataBits = 8;
             Sp.StopBits = StopBits.One;
             Sp.ReceivedBytesThreshold = 100;
             Sp.ReadTimeout = 200;
             Sp.DataReceived += new SerialDataReceivedEventHandler(Sp_DataReceived);
             interfaceUpdataHandle = new HandleInterfaceUpdataDelegate(UpdateTextBox);//实例化委托对象
             if (Sp.IsOpen == true) Sp.Close();
             try
             {
                 Sp.Open();
                 bolFlag = true;
             }
             catch
             {
                 MessageBox.Show("端口" + Common.BaseClass.strCom + "打开失败!");
             }
在离开该页面时需要关闭串口
Sp.Close()
有的时候程序运行Sp.Close()时会导致应用程序被挂起hungapp(错误提示在window日志中)!为什么啊!什么办法都想过了就是不行啊!
哪位大哥大姐帮帮忙啊!急急急急急!!!!!!
------解决方案--------------------
   执行  DataReceived 时间后  ,执行以下Invoke
        try
           {
               byte[] readBuffer = new byte[sp.ReadBufferSize];
               //byte[] readBuffer = new byte[3];
               Thread.Sleep(1000); //做一个延时,否则分两次发送
               sp.Read(readBuffer, 0, readBuffer.Length);
               this.Invoke(interfaceUpdataHandle, new string[] { Encoding.UTF8.GetString(readBuffer) });               
           }
           catch (Exception ex)
           {
               MessageBox.Show("发生错误:" + ex.ToString());
           }