【发布时间】:2013-04-16 03:10:52
【问题描述】:
我知道在 Windows 应用程序后台线程不允许直接访问 GUI 项目。我不完全明白为什么。我找到的最接近的解释是这个:
对 Windows 窗体控件的访问本质上不是线程安全的。如果您有两个或更多线程操作控件的状态,则可能会强制控件进入不一致的状态。其他与线程相关的错误是可能的,例如竞争条件和死锁。确保以线程安全的方式执行对控件的访问非常重要。
谁能详细说明两个线程可以做什么会使窗口项进入不一致状态的具体示例?
【问题讨论】:
-
任何存在共享状态(如结构)的东西,无论是直接通过 API 使用,还是在 API 中私下使用,都可能很容易被搞砸。其细节可能因操作系统版本而异。如果有人说他们的代码不是线程安全的,我永远不会用我的代码冒险,因此总是练习安全线程。 :)
标签: windows multithreading thread-safety