C# BeginInvoke 创建线程有时候创建失败,是什么原因

具体描述,请看图示。请大神协助看下,不胜感激。
2025-04-23 20:20:22
推荐回答(1个)
回答1:

不能从线程里直接使用this.label4.Text = shun_liuliang + "\r\n";这种的东西
因为UI控件操作不是线程安全的
如果要通过线程更改UI,需要使用invoke来做
1.在Form里写一个更改UI的函数

2.声明一个代理,这个代理可以代理这个更改UI的函数

3.函数内部

if(this.label4.invokerequied)//判断是否需要invoke操作
{
//实例化此函数自身的代理
//如果此函数有参数,需要创建一个数组,按参数数量和顺序存放参数
//使用this.label4.begininvoke(代理,参数)来申请UI更新

}
else
{
//更新代码,如this.label4.Text = shun_liuliang + "\r\n";

}

4.线程中,在要更新的地方调用这个函数即可