.NET 3.5和WPF中的Dispatcher概念与.NET 2.0中的后台线程有何不同?
例如,下面两个语句有何不同:
delegate.Invoke/BeginInvoke
AND
this.dispatcher.Invoke/BeginInvoke
.NET 3.5和WPF中的Dispatcher概念与.NET 2.0中的后台线程有何不同?
例如,下面两个语句有何不同:
delegate.Invoke/BeginInvoke
AND
this.dispatcher.Invoke/BeginInvoke
使用调度程序执行长时间操作仍然会导致其在UI线程上执行,只是在与当前操作不同的优先级下执行。这里的问题在于通常情况下,您希望长时间运行的操作具有尽可能大的带宽。在调度程序下运行,您受到UI的限制。
调度程序的目的是为后台线程提供返回到UI的锚点,以便例如提供有关操作进度的UI更新。
如果要在后台中运行操作并将其推迟执行到UI,请使用BackgroundWorker或新的任务库。使用调度程序将更新马歇尔回到UI。