WinForm中在非UI线程更改控件值的办法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WinForm中在非UI线程更改控件值的办法相关的知识,希望对你有一定的参考价值。
从非UI线程调用UI控件赋值、或进行其他更新UI的操作的话,会出现异常:
System.InvalidOperationException:“线程间操作无效: 从不是创建控件“xxx”的线程访问它。”
解决办法:
原来的
xxx.Text="Test";
换成
xxx.BeginInvoke(new Action(()=>{xxx.Text="Test"}));
使用BeginInvoke解决。
参考:Control的Invoke和BeginInvoke 是相对于支线线程(因为一般在支线线程中调用,用来更新主线程ui)Invoke立即插入主线程中执行,而BeginInvoke 要等主线程结束才执行
以上是关于WinForm中在非UI线程更改控件值的办法的主要内容,如果未能解决你的问题,请参考以下文章