【发布时间】:2011-11-18 06:27:01
【问题描述】:
为什么在 Windows 中一个图形元素(如 Winform 中的按钮)只能从创建它的线程访问?
【问题讨论】:
标签: windows winforms user-interface thread-safety
为什么在 Windows 中一个图形元素(如 Winform 中的按钮)只能从创建它的线程访问?
【问题讨论】:
标签: windows winforms user-interface thread-safety
这是因为大多数原生窗口 API(例如 Windows API)都内置了线程亲和性,以允许消息传递正常工作,因为“消息”(例如输入事件)在队列中处理在单个线程中(即:消息泵)。
因此,包装此功能的图形元素(例如 Windows 窗体)从其核心 API 继承此限制。
话虽如此,某些框架不会以这种方式限制您。例如,WPF 允许从后台线程更改数据绑定原语,4.5 版本甚至允许从后台线程更改集合中的项目。线程同步要求在内部处理。
【讨论】: