线程间操作无效: 从不是创建控件“textBox1”的线程访问它.关于tcpip通信问题
在线程中我调用了textbox,改变他的值。但是程序不允许,经过查资料得知可以在线程中建立委托,类似于if(textBox1.InvokeRequired){??????...
在线程中我调用了textbox,改变他的值。但是程序不允许,经过查资料得知可以在线程中建立委托,类似于 if (textBox1.InvokeRequired)
{
???????????
Invoke(df);
}
else
{
textBox1.Text = recvStr;
}
但是?????的位置如何写呢,如果写这个委托,小白一个,照猫画虎。求指教,程序内容是客户端想服务器端传字符串,服务器端验收,统计是否有丢包 展开
{
???????????
Invoke(df);
}
else
{
textBox1.Text = recvStr;
}
但是?????的位置如何写呢,如果写这个委托,小白一个,照猫画虎。求指教,程序内容是客户端想服务器端传字符串,服务器端验收,统计是否有丢包 展开
1个回答
展开全部
private void SetText()
{
if(textBox1.InvokeRequired)
{
action d = new action(SetText);//系统自带的委托 不带参数
this.invoke(d);
}
else
{
textBox1.Text = recvStr;
}
}
//定义委托
private delegate void SetTextHander();//不带参数
private delegate void SetTextHander(string recvStr);//带参数
private void SetText(string recvStr)
{
if(textBox1.InvokeRequired)
{
SetTextHanderd = new SetTextHander(SetText);//系统自带的委托 带参数
this.invoke(d,new object[]{recvStr});
}
else
{
textBox1.Text = recvStr;
}
}
{
if(textBox1.InvokeRequired)
{
action d = new action(SetText);//系统自带的委托 不带参数
this.invoke(d);
}
else
{
textBox1.Text = recvStr;
}
}
//定义委托
private delegate void SetTextHander();//不带参数
private delegate void SetTextHander(string recvStr);//带参数
private void SetText(string recvStr)
{
if(textBox1.InvokeRequired)
{
SetTextHanderd = new SetTextHander(SetText);//系统自带的委托 带参数
this.invoke(d,new object[]{recvStr});
}
else
{
textBox1.Text = recvStr;
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询