WPF多线程如何工作?

时间:2015-06-14 11:07:59

标签: wpf multithreading dispatcher

我知道WPF中多线程的基本构建块,但我确实有一个令我很困惑的问题。

WPF应用程序以两个线程开头:

  

一个用于处理渲染,另一个用于管理UI。

这听起来不错,但UI线程让我感到困扰, UI Thread只是一个应用程序线程

  

创建WPF UI元素的线程拥有元素和其他元素   线程不能直接与UI元素交互,这是众所周知的   作为线程亲和力。

说,我在Myapplication中有两个文本框和一个按钮,每个文本框都有自己的 DispatcherObject ,点击按钮我会用值更新文本框,希望这个'将由 UI线程完成。

1.现在,我的问题是UI Thread是应用程序线程, Button 将有自己的 DispatcherObject 两个文本框将有他们的拥有 DispatcherObject ,这个具有自己的 DispatcherObject 的UI线程如何与这些UI控件不同DispatcherObject可以更新文本框?

  1. 我的另一个问题是,如果在后台线程中创建新文本框,那么我可以从UI线程更新此文本框吗?
  2. 请纠正我的理解,我无法继续前进。

1 个答案:

答案 0 :(得分:2)

每个DispatcherObject都与UI线程相关联。只有该线程才能访问该特定的DispatcherObject。在一个装饰精良的WPF应用程序中,只有一个UI线程。所有元素都在那里创建和访问。

您可以拥有多个具有不同元素集的UI线程,但这将是一个带来很多问题的深奥场景。

  

如果在后台线程中创建新文本框

该文本框将绑定到后台线程,并且只能在那里使用。因此,您无法将其挂钩到主元素树中。这将毫无用处。