窗口:同一线程(STA)上的图形元素

时间:2011-09-15 21:54:35

标签: windows winforms user-interface thread-safety

为什么在Windows中只能从创建它的线程访问图形元素(Winform中的Button)?

1 个答案:

答案 0 :(得分:2)

这是因为大多数本机窗口API(例如Windows API)都内置了线程关联,以允许消息传递正常工作,因为“消息”(例如输入事件)在队列中处理在一个线程内(即:消息泵)。

因此,包含此功能的图形元素(如Windows窗体)会从其核心API继承此限制。

话虽如此,一些框架并没有以这种方式限制你。例如,WPF允许数据绑定基元从后台线程更改,4.5版本甚至允许集合中的项目从后台线程更改。线程同步要求在内部处理。