我知道 WPF 中多线程的基本构建 block ,但我确实有一个让我很困惑的问题。
WPF 应用程序从两个线程开始:
one for handling rendering and another for managing the UI.
这听起来不错,但是 UI 线程困扰着我, UI 线程只不过是一个应用程序线程
The thread that creates a WPF UI element owns the elements and other threads can not interact with the UI elements directly,this is known as thread affinity.
说,我的应用程序中有两个文本框和一个按钮,每个文本框都有自己的调度程序对象 ,点击按钮我将用值更新文本框,希望这将由 完成用户界面线程 .
1.现在,我的问题是UI线程是应用程序线程,按钮 会有自己的调度程序对象 和 两个文本框 会有自己的调度程序对象 , 这个UI线程怎么有自己的调度程序对象 和这些 UI 控件不同的是 DispatcherObject 可以更新文本框吗?
请纠正我的理解,我无法继续。
最佳答案
每个 DispatcherObject 都与一个 UI 线程相关联。只有那个线程可以访问那个特定的 DispatcherObject。在一个结构合理的 WPF 应用程序中,只有一个 UI 线程。所有元素都在那里创建和访问。
您可以拥有多个具有不同元素集的 UI 线程,但这将是一个深奥的场景,会带来很多问题。
If create new textbox in Background thread
该文本框将绑定(bind)到后台线程,并且只能在那里使用。因此,您无法将其挂接到主元素树中。这将是无用的。
关于wpf - WPF 多线程如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30828637/