继续上一篇,在接收程序中,将收到的内容在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);
}
创建一个全局变量
赋值后调用线程
连接成功也加上
调试 结果:成功将线程收到的数据写到了控件上