A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

在不是创建控件的线程访问控件属性时,系统报错如图

视频里给我们介绍了一个方法:

Control.CheckForIllegalCrossThreadCalls = false;

在msdn中有这样的备注:如果试图访问控件的方法或属性之一的线程不是创建该控件的线程,则通常会导致不可预知的结果。通常,无效的线程活动是对访问控件的 Handle 属性的错误线程的调用。将 CheckForIllegalCrossThreadCalls 设置为 true 可以在调试时更容易查找并诊断此线程活动。请注意在调试器外部启动应用程序时,非法跨线程调用将始终引发异常。

网上有一个“使用Invoke方法”来解决的办法
  1.   void appendtxt(object s)
  2.         {
  3.             this.Invoke((EventHandler)(delegate
  4.             {
  5.                 txtbox1.AppendText("客户端连接成功" + s + "\r\n");
  6.             }));
  7.             
  8.         }
复制代码
能帮我详细解答一下这个方法的工作原理么?

3.jpg (28.55 KB, 下载次数: 22)

3.jpg

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

1 个回复

倒序浏览
加一句代码


public Form1()
        {
            InitializeComponent();
            TextBox.CheckForIllegalCrossThreadCalls = false;//关闭跨线程修改空间检查
        }

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马