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

具体描述,请看图示。请大神协助看下,不胜感激。... 具体描述,请看图示。请大神协助看下,不胜感激。 展开
 我来答
gn...s@163.com
2017-05-22 · TA获得超过149个赞
知道答主
回答量:233
采纳率:0%
帮助的人:71.6万
展开全部
不能从线程里直接使用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.线程中,在要更新的地方调用这个函数即可
追问
哦,你的意思是里面不能写打印日志的函数么?
能给个方案吗,看看我发的图片,应该如何改呢
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式