WPF 中 Dispatcher 对象有什么用?
WPF 中 Dispatcher 对象有什么用?
What is the use of a Dispatcher Object in WPF?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
WPF 中 Dispatcher 对象有什么用?
What is the use of a Dispatcher Object in WPF?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
几乎每个 WPF 元素都具有线程关联性。 这意味着只能从创建该元素的线程进行对此类元素的访问。
为了做到这一点,每个需要线程关联的元素最终都是从 DispatcherObject 类派生的。 此类提供一个名为 Dispatcher 的属性,该属性返回与 WPF 元素关联的 Dispatcher 对象。
Dispatcher 类用于在其附加线程上执行工作。 它有一个工作项队列,负责在调度程序线程上执行工作项。
您可以在以下链接中找到有关该主题的更多详细信息:
https://www.codeproject.com/Articles/101423/WPF-由内而外的调度程序
Almost every WPF element has thread affinity. This means that access to such an element should be made only from the thread that created the element.
In order to do so, every element that requires thread affinity is derived, eventually, from DispatcherObject class. This class provides a property named Dispatcher that returns the Dispatcher object associated with the WPF element.
The Dispatcher class is used to perform work on its attached thread. It has a queue of work items and it is in charge of executing the work items on the dispatcher thread.
You can find on the following link some more details on the subject:
https://www.codeproject.com/Articles/101423/WPF-Inside-Out-Dispatcher
调度程序通常用于调用另一个线程上的调用。 一个例子是,如果您有一个后台线程正在工作,并且您需要更新 UI 线程,则需要一个调度程序来执行此操作。
A dispatcher is often used to invoke calls on another thread. An example would be if you have a background thread working, and you need to update the UI thread, you would need a dispatcher to do it.
根据我的经验,我们使用 Prism 事件聚合器。 当事件发生时,它会调用
Dispatcher.Invoke()
来更新 UI。 这是因为只有 Dispatcher 可以从非 UI 线程更新 UI 中的对象
。In my experience we use Prism Event Aggregator. When the event happens it calls the
Dispatcher.Invoke()
to update the UI. This is becauseonly the Dispatcher can update the objects in your UI from a non-UI thread
.