为什么调试状态会报错“从不是创建控件“button”的线程访问它”:
1、为什么“开始执行(不调试)”不会报错,”开始调试“就会报错
2、既然“开始执行(不调试)”不会报错,那么使用这个窗体软件时,是不是可以忽略这个问题?忽略了会给我带来什么坏处?
3、为什么修改button的背景颜色,不会报错,修改其他属性会报错?
相关问题
- Sorting 3 numbers without branching [closed]
- Graphics.DrawImage() - Throws out of memory except
- Why am I getting UnauthorizedAccessException on th
- 求获取指定qq 资料的方法
- How to know full paths to DLL's from .csproj f
其他线程访问UI线程创建的控件,这就是线程安全问题。解决的办法就是异步方式和设置CheckForIllegalCrossThreadCalls = false ;
改成异步调用就行了,这是winfrom程序常见的一个问题,如果用wpf的双向绑定就不会有这个问题
肯定是非UI线程去操作button导致的了(也许你使用了SynchronizationContext,但是部分逻辑没有覆盖到),解决途径就是把这部分操作委托给UI线程去做。
子线程不能修改 主线程(UI线程)控件 。winfrom 规定 。没有为什么,
在其他语言也是一样, 比如安卓开发也是一样