我写了一段关于serialport类读取串口数据的小程序,但是有个问题很是不明白;例如下面代码:
 private void sport_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
    bool  = true;
            int i = 0;
           
            MessageBox.Show("进入sport_DataReceived事件!");
            if (sender.GetType() != typeof(System.IO.Ports.SerialPort))
            {             
                return;
            }
            string strReceive = string.Empty;
            string strCollect = string.Empty;            string strBack = string.Empty;            byte[] buffer = new byte[2];
            System.IO.Ports.SerialPort comPort = (System.IO.Ports.SerialPort)sender;            try
            {
                sport.ReceivedBytesThreshold = sport.ReadBufferSize;                while ()
                {
                    sport.Read(buffer, 0, buffer.Length);                    if (buffer != null)
                    {
                        for (i = 0; i <= 1; i++)
                        {
                            strReceive = buffer[i].ToString("X2");          
                            MessageBox.Show(strReceive);
                            if (i == 1)
                            {
                                 = false;
                                strReceive = strReceive + strBack;
                            }
                            else
                            {
                                strBack = strReceive;
                            }
                        }
                    }
                    //else { MessageBox.Show("没进去"); }
                    
                }
                strReceive = strReceive.Replace("\0", string.Empty);
                strReceive = strReceive.Replace("\r\n", string.Empty);
                strReceive = strReceive.Replace("\r", string.Empty);
                strReceive = strReceive.Replace("\n", string.Empty);                strCollect = Convert.ToString(    Convert.ToDouble(Convert.ToInt32(strReceive, 16)) / 100     );                MessageBox.Show("接收到的数据为2: " + strCollect);
                this.Invoke(updateText, strCollect);                strCollect = string.Empty;
                strReceive = string.Empty;
                buffer = null;
                sport.DiscardInBuffer();
                MessageBox.Show("事件执行完成了!");
}当事件被激发时,运行正常;按常规来讲程序弹出 MessageBox.Show("事件执行完成了!");后,此事件应该结束,但是实际运行的时候,弹出("事件执行完成了!")后;程序由弹出MessageBox.Show("进入sport_DataReceived事件!");就是说事件被触发一次,但是却执行了两次内部代码!不知是何原因??