基恩士BT-W155G扫码枪PDA开发-线程与控件交互

    继续上一篇,在接收程序中,将收到的内容在textBox中显示出来。

                //这里做你想要对消息做的处理
                string str = Encoding.Default.GetString(data, 0, len);//二进制数组转换成字符串……
                ScanMessageShow(str);

    运行到 _Form1Instance.textBox1.Text += Str时,报错:“Control.Invoke 必须用于与在独立线程上创建的控件交互。”估计应为窗体中的textBox1是一个线程,我创建的无线接收线程不能与其交互。

     采用委托的方式:

        //声明一个委托
        private delegate void NewDel();

        //开辟一个线程
        public void ContentOutput()
        {
            Thread thread;
            ThreadStart threadstart = new ThreadStart(InvokeStart);
            thread = new Thread(threadstart);
            thread.Start();
        }

        //用Invoke方法,调用委托
        public void InvokeStart()
        {
            if (InvokeRequired)
            {
                BeginInvoke(new NewDel(GetMac));
            }
        }

        //封装一个方法,用来给控件赋值
        //vs2008 不允许在委托中传参,做个全局变量ResMsgOut用于信息输出
        private void GetMac()
        {
            ScanMessageShow(ResMsgOut);
        }

    创建一个全局变量

    赋值后调用线程

     连接成功也加上

 

  调试 结果:成功将线程收到的数据写到了控件上

  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一(义)元之始

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值