C# 线程间操作无效: 从不是创建控件“receivemsg”的线程访问它。

在学习异步Socke通信程序时,遇到“ 线程间操作无效: 从不是创建控件“receivemsg”的线程访问它”这种错误。

关于这种错误解决方法有两种:

方法一:

     刚开始的时候,我按照网上提供的方法,直接在代码中添加如下代码:

public Form1()
        {
            InitializeComponent();
            //关闭对文本框的非法线程操作检查
            TextBox.CheckForIllegalCrossThreadCalls = false;
        }
这种方法是利用直接关闭对文本框的非法线程操作的方法,解决问题,但是这种方法治标不治本,并没有从根本上解决跨线程调用的问题,所以我们接下来可以使用第二种方法。

方法二:

this.Invoke(new Action(() =>
                {
                    receivemsg.AppendText("客户端连接成功!" + "\r\n");
                }));  

在多线程编程中,我们经常要在工作线程中去更新界面显示,而在多线程中直接调用界面控件的方法是错误的做法,Invoke 和 BeginInvoke 就是为了解决这个问题而出现的,使你在多线程中安全的更新界面显示。

你可能感兴趣的:(C# 线程间操作无效: 从不是创建控件“receivemsg”的线程访问它。)