Dispatcher与后台线程有何不同?

Ash*_*shu 6 wpf multithreading delegates dispatcher wpf-controls

.NET 3.5和WPF中的Dispatcher概念与.NET 2.0中的后台线程有何不同?

例如,下面的陈述之间有什么区别:

delegate.Invoke/BeginInvoke
Run Code Online (Sandbox Code Playgroud)

this.dispatcher.Invoke/BeginInvoke
Run Code Online (Sandbox Code Playgroud)

Jus*_*ier 6

可以将调度程序视为事件发送到的队列; 调度程序将在UI线程上运行并为UI执行事件.在Windows中,UI控件只能由创建它们的线程修改,因此UI的任何更改都必须从UI线程完成 - 因此,这是修改窗口元素的操作必须发送到UI的关键原因之一调度员.

反过来,后台线程是与UI不同的线程.因此,在其中一个线程上运行的任何内容都不会影响或阻止UI.