日期:2014-05-18 浏览次数:21001 次
// 创建代理
delegate void setTextCallBack(String text);
//调用窗体中的invode函数传递参数
private void setText(String text)
{
if (this.label1.InvokeRequired)
{
setItemCallBack b = new setItemCallBack(setText);
this.Invoke(b, new object[] { text});
}
else
{
this.lable1.text = text;
}
}
// 创建代理
delegate void setTextCallBack(Label lbl, String text);
//调用窗体中的invode函数传递参数
private void setText(Label lbl, String text)
{
if (lbl.InvokeRequired)
{
setTextCallBack b = new setTextCallBack(setText);
this.Invoke(b, new object[] { text });
}
else
{
lbl.Text = text;
}
}
setTextCallBack b = new setTextCallBack(setText);
this.Invoke(b, new object[] { lbl, text }); //<-------
------解决方案--------------------
楼上正解.添加一个参数就OK
------解决方案--------------------
建议使用winapi sendmessage 函数,从线程中向窗口发送消息,也可以解决问题
------解决方案--------------------
this.Invoke(b, new object[] { text });
-->
this.Invoke(b, new object[] { lbl, text });
怀疑楼主要么是粗心,要么就是不知道这个代码到底什么含义和功能才行,只是依葫芦画瓢,一改就出低级错误
------解决方案--------------------
隐患就是有的时候可能界面控件显示与后台线程内容不一致,
这个是致命的。
可以考虑委托来做