黑马程序员技术交流社区
标题:
“线程间操作无效: 从不是创建控件" txtbox1" 的线程访问它。
[打印本页]
作者:
汪振
时间:
2013-2-28 16:52
标题:
“线程间操作无效: 从不是创建控件" txtbox1" 的线程访问它。
在不是创建控件的线程访问控件属性时,系统报错如图
视频里给我们介绍了一个方法:
Control.CheckForIllegalCrossThreadCalls = false;
在msdn中有这样的备注:
如果试图访问控件的方法或属性之一的线程不是创建该控件的线程,则通常会导致不可预知的结果。通常,无效的线程活动是对访问控件的
Handle
属性的错误线程的调用。将
CheckForIllegalCrossThreadCalls
设置为
true
可以在调试时更容易查找并诊断此线程活动。请注意在调试器外部启动应用程序时,非法跨线程调用将始终引发异常。
网上有一个“
使用Invoke方法
”来解决的办法
void appendtxt(object s)
{
this.Invoke((EventHandler)(delegate
{
txtbox1.AppendText("客户端连接成功" + s + "\r\n");
}));
}
复制代码
能帮我详细解答一下这个方法的工作原理么?
3.jpg
(28.55 KB, 下载次数: 41)
下载附件
2013-2-28 16:47 上传
作者:
王立
时间:
2013-2-28 17:35
加一句代码
public Form1()
{
InitializeComponent();
TextBox.CheckForIllegalCrossThreadCalls = false;//关闭跨线程修改空间检查
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2