if(RText.Checked)
            {
                //直接按ASCII规则转换成字符串
                builder.Append(Encoding.ASCII.GetString(buf));
               
            }
            //追加的形式添加到文本框末端,并滚动到最后。
           this.richTextBox1.AppendText(builder.ToString());
不知道为什么串口扫码后到这一步总是报错,未经处理的类型异常,无法在richtextbox1中显示,哪位大神指点一下,跪谢了!

解决方案 »

  1.   

    this.richTextBox1.AppendText(builder.ToString());到这步就会报错,
    错误信息如下“System.InvalidOperationException”类型的未经处理的异常在 System.Windows.Forms.dll 中发生 其他信息: 线程间操作无效: 从不是创建控件“ReceiveEdit”的线程访问它。
      

  2.   

    你要给richTextBox1赋值需要通过委托实现。
      

  3.   

    委托 http://blog.csdn.net/zhaowenkaiyongheng/article/details/53838617
      

  4.   


          Invoke((ThreadStart)(()=>{            if(RText.Checked)
                {
                    //直接按ASCII规则转换成字符串
                    builder.Append(Encoding.ASCII.GetString(buf));
                }
                //追加的形式添加到文本框末端,并滚动到最后。
               this.richTextBox1.AppendText(builder.ToString());     }));
      

  5.   

    非UI线程不能直接调用UI元素对象
      

  6.   

    后台线程访问窗口上的控件要调用窗口或者控件的Invoke函数,要不就会报错,具体实现可以百度一下