代码如下:
namespace TestForm
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }        private void button1_Click(object sender, EventArgs e)
        {
            this.serialPort1.Open();
        }        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            this.serialPort1.Close();
        }
    }
}

解决方案 »

  1.   

    1. 是不是你注册了两次button1_Click事件
    2. CommMonitor串口监控工具是否正常这种问题如果发整个工程的话,别人可以复现异常,也就好帮你debug
      

  2.   

    首先非常感谢bill_shi68的回复,谢谢!1、没有注册两次button1_Click事件,代码仅有上面那些;2、CommMonitor串口监控工具是正常的,我用别人的程序和用我自己用Delphi写的程序,打开串口,在串口监控工具中只显示一次TestForm.exe, COM1, IOCTL_SET_BAUD_RATE    : 1200,大家也可以写个最简单的程序,拖个SerialPort串口控件,再放个按钮,按钮事件仅写 this.serialPort1.Open();然后用串口监控工具看一下,没有执行this.serialPort1.Open();之前和执行this.serialPort1.Open();后是不是显示了两次TestForm.exe, COM1, IOCTL_SET_BAUD_RATE    : 1200
      

  3.   

    不大可能会打开两次的,因为串口只要打开了,再打开一次会产生异常
    只要第一次serialPort1.Open()成功了,再Open一次会引发异常的
      

  4.   

    我就执行this.serialPort1.Open();这一句,就出来两次如下串口信息:
    TestForm.exe, COM1, IOCTL_SET_BAUD_RATE    :     1200
    TestForm.exe, COM1, IOCTL_SET_BAUD_RATE    :     1200
    我用DELPHI写的打开串口或用别人写的打开串口的程序就只出现一次这样的串口信息,再说,我在打开串口之前也一定会检测当前串口的状态,若是打开的,则先关闭再打开,若没有打开,才会直接去打开。所以这事非常不理解。