WPF Dispatcher VS Winform UI线程控制调用

时间:2014-11-20 07:32:17

标签: c# wpf winforms thread-safety dispatcher

我有一个查询,在Winform(UI线程)控件中调用是否有处理跨线程问题,那么为什么在WPF中引入了Dispatcher? Dispatcher的其他优点是什么?

请帮我理解这一点。

1 个答案:

答案 0 :(得分:3)

WPF中引入Dispatcher的主要原因是WPF不是WinForms和WinForms类成员与WPF对象无关。他们必须做某事

Microsoft是否可以像WinForms一样实现WPF?当然。但WPF是一种根本不同的API,有意义的是他们会利用这个机会重新设计处理编写任何Windows软件时自然发生的线程关联的范例,无论是托管还是其他方式。

请注意,WPF,特别是Dispatcher,是比WinForms及其Invoke()方法更高级的抽象。应用程序对Dispatcher的控制比对Invoke()的WinForms程序更多。 Dispatcher支持不同的优先级,甚至支持可以安全地在不同线程中使用的DispatcherObject的例外(参见Freezable)。

在一天结束时,WPF的Dispatcher与WinForm的Invoke()方法做的工作大致相同。它只是有点闪亮,为实现相同的基本目标提供了更多细致入微的机制。