WindowsFormsSynchronization和DispatcherSynchronization之间有什么区别?

时间:2014-03-06 15:22:00

标签: c# .net multithreading thread-safety

Pro请让我知道 WindowsFormsSynchronizationContext DispatcherSynchronizationContext 之间的差异?这些属于 System.Threading System.Windows.Threading 类的剂量!

3 个答案:

答案 0 :(得分:5)

WindowsFormsSynchronizationContext - 在Windows窗体中提供同步

DispatcherSynchronizationContext - WPF应用程序使用2个线程。一个线程是用于渲染的后台线程,另一个线程用于UI。因此,其他UI线程无法访问一个线程中的UI元素。因此,微软推出了负责多个UI线程交互的调度程序。

DispatcherObject类提供了两种方法。

  1. CheckAccess:确定调用线程是否可以访问此对象。如果调用线程有权访问此对象,则返回true,否则返回false。

  2. VerifyAccess:如果调用线程无权访问该对象,则抛出InvalidOperationException。

答案 1 :(得分:0)

http://msdn.microsoft.com/en-us/library/system.windows.forms.windowsformssynchronizationcontext(v=vs.110).aspx

它位于System.Windows.Forms命名空间中。这为Windows窗体模型提供了同步上下文。

http://msdn.microsoft.com/en-us/library/system.windows.threading.dispatchersynchronizationcontext(v=vs.110).aspx

它位于System.Windows.Threading命名空间中,并为WPF模型提供同步上下文

记住 - Winforms和WPF的不同之处在于,WPF是一个用于执行桌面客户端应用程序的新平台,并且在某种程度上“取代”了经典的Winforms模型。

答案 2 :(得分:0)

差异完全在私人实施细节中。它们是每个相关范例SynchronizationContext的相应实现。从来没有任何理由通过直接类型访问任何一个对象;你应该只需要将它们中的任何一个视为任意SynchronizationContext