您的位置:首页 > 其它

利用委托解决多线程中“不是此控件创建的线程”的问题

2012-02-27 13:08 316 查看
在C#WINDOWS创建多线程处理遇到“不是此控件创建的线程”的问题,虽然网上有人已给出解决方法,并且我也是按此方法解决,不过我感觉还是有必要记录一下,嘿嘿!

主要解决步骤是:

首先创建delegate委托与控件的赋值方法,有多少个控件需要,则创建多少个委托,例,我有两个控件需在另一个事件中被使用,则创建两个委托,代码如下:

   //建立委托
delegate void setLblStr(string str);

//设置LABLE控件的TEXT值
void SetLblStr(string str)
{
this.lblDown.Text = str;
this.lblDown.Update();
}

//建立委托
delegate void setTxtStr(String str);

//设置TEXT控件的TEXT值
void SetTxtStr(String str)
{
txtUrls.Text = str;
txtUrls.Update();
}

然后在使用线程的事件中调用Invoke方法来调用委托实现,如下代码:

//创建委托实例,把要处理的方法传入委托则OK了

setLblStr sl = new setLblStr(SetLblStr);

//调用Invode()方法调用委托,并传参入委托;
this.Invoke(sl, "下载中,请稍候..........");

//创建委托实例,把要处理的方法传入委托则OK了

setTxtStr st1 = new setTxtStr(SetTxtStr);

//调用Invode()方法调用委托,并传参入委托
this.Invoke(st1, temp.ToString());//temp是定义好的stringBuilder对象

OK,问题处理完成,再哪要处理就直接调用委托处理就行了,嘿嘿!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐