我知道WPF中多线程的基本构建块,但我确实有一个令我很困惑的问题。
WPF应用程序以两个线程开头:
一个用于处理渲染,另一个用于管理UI。
这听起来不错,但UI线程让我感到困扰, UI Thread只是一个应用程序线程
创建WPF UI元素的线程拥有元素和其他元素 线程不能直接与UI元素交互,这是众所周知的 作为线程亲和力。
说,我在Myapplication中有两个文本框和一个按钮,每个文本框都有自己的 DispatcherObject ,点击按钮我会用值更新文本框,希望这个'将由 UI线程完成。
1.现在,我的问题是UI Thread是应用程序线程, Button 将有自己的 DispatcherObject 和两个文本框将有他们的拥有 DispatcherObject ,这个具有自己的 DispatcherObject 的UI线程如何与这些UI控件不同DispatcherObject可以更新文本框?
请纠正我的理解,我无法继续前进。
答案 0 :(得分:2)
每个DispatcherObject都与UI线程相关联。只有该线程才能访问该特定的DispatcherObject。在一个装饰精良的WPF应用程序中,只有一个UI线程。所有元素都在那里创建和访问。
您可以拥有多个具有不同元素集的UI线程,但这将是一个带来很多问题的深奥场景。
如果在后台线程中创建新文本框
该文本框将绑定到后台线程,并且只能在那里使用。因此,您无法将其挂钩到主元素树中。这将毫无用处。