Dispatcher.CurrentDispatcher与Application.Current

Dispatcher.CurrentDispatcher(in System.Windows.Threading)和Application.Current.Dispatcher(in System.Windows)之间有什么区别?


我的直觉告诉我,它Application.Current.Dispatcher永远不会改变,并且对当前应用程序中的所有线程都是全局的,同时Dispatcher.CurrentDispatcher可能会Dispatcher根据调用它的线程创建一个新实例。


那是对的吗?


如果是这样,Dispatcher.CurrentDispatcher主要是为了多线程UI 的目的吗?


沧海一幻觉
浏览 1343回答 3
3回答

凤凰求蛊

我的直觉告诉我Application.Current.Dispatcher永远不会更改,并且对于当前应用程序中的所有线程都是全局的,而Dispatcher.CurrentDispatcher可能会根据调用它的线程来创建Dispatcher的新实例。没错,这Application.Current.Dispatcher是应用程序的实例属性,该属性在构造时被分配为当前线程的调度程序。并且作为文档Dispatcher.CurrentDispatcher指出:获取当前正在执行的线程的Dispatcher,如果尚未与该线程关联,则创建一个新的Dispatcher。如果是这样,Dispatcher.CurrentDispatcher的目的主要是针对多线程UI吗?可能地,我在获取后台线程的分派器时没有遇到任何用处,因为您通常没有属于您的UI元素,您可能希望向其分配操作。
打开App,查看更多内容
随时随地看视频慕课网APP