线程间操作无效: 从不是创建控件“”的线程访问它。
2010-04-24 10:11
288 查看
线程间操作无效: 从不是创建控件“”的线程访问它。
第一:
Control.CheckForIllegalCrossThreadCalls = false;
线程开始的时候加这么一句,OK,看不到错误了~
啥都能用了~
第二:
用委托,在05里,每个控件都有个InvokeRequired的属性~
判断一下是不是true,是的话进行Invoke操作的,完事了~
//建立个委托
private delegate string returnStrDelegate();
//搞个最简单滴取值滴方法~
private string returnSchool()
{
return CB_School.SelectedValue.ToString();
}
//判断一下是不是该用Invoke滴~,不是就直接返回~
private string returnCB(returnStrDelegate myDelegate)
{
if (this.InvokeRequired)
{
return (string)this.Invoke(myDelegate);
}
else
{
return myDelegate();
}
}
//别的线程里的调用哇~
string _school = returnCB(returnSchool);
大概就是这样的,貌似有听说最好别用第一种方法,具体为啥我也不知道~
反正我一直都用委托的,也不是很麻烦~
麻烦知道的更清楚的人给说一声为什么,谢谢了~
Feedback
因为第一种方法只是简单的将错误提示禁用了,仍然存在跨线程调用控件的问题。为此可能造成两个线程同时或者循环改变该控件的状态导致线程死锁。
Invoke方法是同步的方法,所以执行过程是有先后顺序的,所以就不会出现那个异常了
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/shaoyupeng/archive/2008/12/22/3582084.aspx
第一:
Control.CheckForIllegalCrossThreadCalls = false;
线程开始的时候加这么一句,OK,看不到错误了~
啥都能用了~
第二:
用委托,在05里,每个控件都有个InvokeRequired的属性~
判断一下是不是true,是的话进行Invoke操作的,完事了~
//建立个委托
private delegate string returnStrDelegate();
//搞个最简单滴取值滴方法~
private string returnSchool()
{
return CB_School.SelectedValue.ToString();
}
//判断一下是不是该用Invoke滴~,不是就直接返回~
private string returnCB(returnStrDelegate myDelegate)
{
if (this.InvokeRequired)
{
return (string)this.Invoke(myDelegate);
}
else
{
return myDelegate();
}
}
//别的线程里的调用哇~
string _school = returnCB(returnSchool);
大概就是这样的,貌似有听说最好别用第一种方法,具体为啥我也不知道~
反正我一直都用委托的,也不是很麻烦~
麻烦知道的更清楚的人给说一声为什么,谢谢了~
Feedback
因为第一种方法只是简单的将错误提示禁用了,仍然存在跨线程调用控件的问题。为此可能造成两个线程同时或者循环改变该控件的状态导致线程死锁。
Invoke方法是同步的方法,所以执行过程是有先后顺序的,所以就不会出现那个异常了
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/shaoyupeng/archive/2008/12/22/3582084.aspx
相关文章推荐
- 小结“线程间操作无效: 从不是创建控件的线程访问它” 错误的解决方法
- 线程间操作无效: 从不是创建控件的线程访问它的三种解决方法
- 线程间操作无效,从不是创建控件的线程访问控件的解决方案
- 线程间操作无效: 从不是创建控件“Control Name'”的线程访问它问题的解决方案及原理分析
- 线程间操作无效: 从不是创建控件“”的线程访问它~~~的解决方法~
- C# 线程间操作无效: 从不是创建控件的线程访问它
- 线程间操作无效: 从不是创建控件的线程访问它
- 线程间操作无效:从不是创建控件的线程访问它的三种方法
- 线程间操作无效: 从不是创建控件的线程访问它 解决办法
- 教你如何解决“线程间操作无效: 从不是创建控件的线程访问它”
- 线程间操作无效,从不是创建控件的线程访问它。
- 线程间操作无效: 从不是创建控件“Control Name'”的线程访问它问题的解决方案及原理分析
- 其他信息: 线程间操作无效: 从不是创建控件“stateLabel”的线程访问它。解决办法
- (委托事件处理)关于多线程执行显示进度条的实例(转)&&线程间操作无效: 从不是创建控件“rtxtEntryNO”的线程访问它。
- 线程间操作无效: 从不是创建控件“”的线程访问它
- 线程间操作无效: 从不是创建控件“label1”的线程访问它。
- 线程间操作无效: 从不是创建控件“xxxxxxxx”的线程访问它。
- 线程间操作无效: 从不是创建控件“textBox1”的线程访问它。
- 线程间操作无效: 从不是创建控件的线程访问它的三种方法
- 解决“线程间操作无效: 从不是创建控件的线程访问它” 非使用线程非安全操作