请选择 进入手机版 | 继续访问电脑版

易游港

 找回密码
 注册
搜索
热搜: 城市天际线
查看: 1470|回复: 0

System.InvalidOperationException:“线程间操作无效: 从不是创建控件“...”的

[复制链接]

64

主题

3

回帖

387

积分

管理员

积分
387
发表于 2023-2-3 19:26:55 | 显示全部楼层 |阅读模式

在使用多线程时,有的时候需要向窗口内的控件赋值。


如果我们值写

[C#] 纯文本查看 复制代码
Thread gs = new Thread(函数方法名);
gs.Start();



当函数方法中出现给窗口控件赋值的情况就会出现System.InvalidOperationException:“线程间操作无效: 从不是创建控件“...”的错误

解决方法一

[C#] 纯文本查看 复制代码
public Form1()
        {
            InitializeComponent();
            CheckForIllegalCrossThreadCalls = false;                  //只要增加这一句就可以对窗口控件赋值了
        }



解决方法二 委托
[C#] 纯文本查看 复制代码
if (sMsgBox.InvokeRequired)
            {
                this.sMsgBox.Invoke(new Action(() =>
                {
                    this.sMsgBox.AppendText(string.Format("{0} {1}\r\n",DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"),txt));
                    this.sMsgBox.Focus();
                }));
            }
            else
            {
                this.sMsgBox.AppendText(string.Format("{0} {1}\r\n", DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"), txt));
                this.sMsgBox.Focus();
            }


回复

使用道具 举报

*滑块验证:
高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|易游港

GMT+8, 2025-2-7 00:10 , Processed in 0.392472 second(s), 28 queries .

Powered by Discuz! X3.5

Copyright © 2001-2025 Tencent Cloud.

快速回复 返回顶部 返回列表