日期:2014-05-18  浏览次数:21022 次

看下这段代码咋么多了个"}"啊?
C# code

 1       void comm_DataReceived(object sender, SerialDataReceivedEventArgs e)
 2      {
 3           int n = comm.BytesToRead;//先记录下来,避免某种原因,人为的原因,操作几次之间时间长,缓存不一致  
 4           byte[] buf = new byte[n];//声明一个临时数组存储当前来的串口数据  
 5           received_count += n;//增加接收计数  
 6           comm.Read(buf, 0, n);//读取缓冲数据  
 7           builder.Remove(0, builder.Length);//清除字符串构造器的内容  
 8           //因为要访问ui资源,所以需要使用invoke方式同步ui。  
 9           this.Invoke((EventHandler)(delegate
 0           {
 1               //判断是否是显示为16禁止  
 2               if (checkBox3.Checked)
 3               {
 4                   //依次的拼接出16进制字符串  
 5                   foreach (byte b in buf)
 6                   {
 7                       builder.Append(b.ToString("X2") + " ");
 8                   }
 9               }
 0               else
 1               {
 2                   //直接按ASCII规则转换成字符串  
 3                   builder.Append(Encoding.ASCII.GetString(buf));
 4               }
 5               //追加的形式添加到文本框末端,并滚动到最后。  
 6               richTextBox1.AppendText(builder.ToString());
 7               //修改接收计数  
 8               label7.Text = "接收字节数:" + received_count.ToString();
 9           }));
 0       }



1:请问下这边9的地方多了个}啊?而且编译的时候还是对的呢。删掉反而报错了。
2:关于这个invoke页不知道是干嘛的,msdn上查的说是用来多线程调用界面控件方法。
不知道这方法在什么情况下开始工作啊?
谢谢了

------解决方案--------------------
探讨
C# code

1 void comm_DataReceived(object sender, SerialDataReceivedEventArgs e)
2 {
3 int n = comm.BytesToRead;//先记录下来,避免某种原因,人为的原因,操作几次之间时间长,缓存不一致
4 byte[] buf =……