有人可以告诉我何时使用 aDispatcher
以及何时使用SynchronizationContext
该类吗?
一段时间以来,我一直在使用Dispatcher
从后台线程排队任务,然后我发现了SynchronizationContext
.
有人可以告诉我何时使用 aDispatcher
以及何时使用SynchronizationContext
该类吗?
一段时间以来,我一直在使用Dispatcher
从后台线程排队任务,然后我发现了SynchronizationContext
.
AFAIK,当使用 WPF 时,该SynchronizationContext.Current
对象的类型DispatcherSynchronizationContext
实际上只是 Dispatcher 对象的包装器,而Post
andSend
方法只是委托给Dispatcher.BeginInvoke
and Dispatcher.Invoke
。
因此,即使您决定使用,SynchronizationContext
我认为您最终还是会在幕后调用调度程序。
此外,我认为使用 SynchronizationContext 有点麻烦,因为您必须将对当前上下文的引用传递给需要调用 UI 的所有线程。
当您的代码与 WPF 紧密耦合时,请使用 Dispatcher。
当您需要在“上下文”线程上排队时使用 AsyncOperationManager。这也适用于 Windows 窗体、ASP .NET 和 WCF 应用程序。
避免自己使用 SynchronizationContext。AsyncOperationManager 在内部使用这种机制。