首页 新闻 会员 周边

对WinForm控件取值,牵扯跨线程的问题吗?

0
[已解决问题] 解决于 2022-08-22 13:16

比如在非UI线程中取控件值:

bool check = checkBox2.Checked;

这样的语句对吗?

还是说必须:

bool check =true;
checkBox2.Invoke(new Action (() => {
if (checkBox2.Checked==false) check =false;
}));

谢谢!

泰德的主页 泰德 | 初学一级 | 园豆:6
提问于:2022-08-17 01:08
< >
分享
最佳答案
0

读取不用跨线程的。

奖励园豆:5
ligiggy | 菜鸟二级 |园豆:207 | 2022-08-19 17:05
其他回答(2)
0

牵扯跨线程问题。
可以用invoke,但还有beiginInvoke、SynchronizationContext、Control.CheckForIllegalCrossThreadCalls = false。
参考别人的博文 https://www.cnblogs.com/weifeng123/p/13734999.html

日暮青色 | 园豆:475 (菜鸟二级) | 2022-08-17 09:16

modify 这么用我知道,但是如果只是read也必须这样吗?

支持(0) 反对(0) 泰德 | 园豆:6 (初学一级) | 2022-08-18 13:05

@泰德: 读取没有问题吧,我没有发现读取会抛跨线程的问题,

支持(0) 反对(0) echo_lovely | 园豆:1433 (小虾三级) | 2022-08-19 08:28
0

读取没有问题吧,我没有发现读取会抛跨线程的异常

echo_lovely | 园豆:1433 (小虾三级) | 2022-08-19 08:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册