利用委托解决多线程中“不是此控件创建的线程”的问题
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,问题处理完成,再哪要处理就直接调用委托处理就行了,嘿嘿!
主要解决步骤是:
首先创建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,问题处理完成,再哪要处理就直接调用委托处理就行了,嘿嘿!
相关文章推荐
- 利用委托解决多线程中“不是此控件创建的线程”的问题
- 多线程委托之跨线程问题分析--在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke(解决方法已更新)
- WinForm解决多线程操作控件问题 线程间操作无效: 从不是创建控件的线程访问它"
- c#中使用多线程访问winform中控件的若干问题 解决线程间操作无效: 从不是创建控件的线程访问它
- invoke委托解决“线程间操作无效: 从不是创建控件的线程访问它”的问题
- 后台线程与UI线程问题:解决“线程间操作无效: 从不是创建控件xxx的线程访问它”
- 【问题解决】线程间操作无效:从不是创建控件“textBox1”的线程访问它
- 黑马程序员-解决系统报错“线程间操作无效: 从不是创建控件" txtbox1" 的线程访问它”问题的方法
- 线程间操作无效: 从不是创建控件“”的线程访问它~~~的解决方法~ 线程间操作无效: 从不是创建控件“Control Name'”的线程访问它问题的解决方案及原理分析
- 【C#】利用委托解决跨线程操作控件产生的问题
- 用委托在listbox中异步显示信息,解决线程间操作无效,从不是创建控件的线程访问它
- (委托事件处理)关于多线程执行显示进度条的实例(转)&&线程间操作无效: 从不是创建控件“rtxtEntryNO”的线程访问它。
- 线程间操作无效: 从不是创建控件“...”的线程访问它 问题解决
- 线程间操作无效:从不是创建控件“XX”的线程访问它,多线程问题
- 线程间操作无效: 从不是创建控件“...”的线程访问它 问题解决
- 线程间操作无效: 从不是创建控件“**”的线程访问它 利用委托处理
- 线程间操作无效: 从不是创建控件“Control Name'”的线程访问它问题的解决方案及原理分析
- 线程间操作无效 从不是创建控件“___”的线程访问它”解决方法的疑惑
- 【转】线程间操作无效:从不是创建控件 的线程访问它,解决办法
- 经典解决“线程间操作无效: 从不是创建控件的线程访问它”