我知道,如果我从不同的线程修改控件,我应该小心,因为 WinForms 和 WPF 不允许从其他线程修改控件的状态。
为什么会有这样的限制?
如果我可以编写线程安全代码,我应该能够安全地修改控件状态。那么为什么会有这样的限制呢?
一些 GUI 框架有这个限制。据书上说Java 并发实践这样做的原因是为了避免复杂的锁定。问题是 GUI 控件可能必须对来自 UI、数据绑定等的事件做出反应,这会导致来自多个不同源的锁定,从而存在死锁的风险。为了避免这种情况,.NET WinForms(和其他 UI)将对组件的访问限制为单个线程,从而避免锁定。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)