分派器与WPF应用程序中用于任务调度器的常规计时器

请解释@Kent Boogaart在多线程WPF应用程序中作为任务调度程序使用的“Dispatchermer”和“常规计时器”之间的区别:

WPF应用程序多线程策略所需的建议

在其中一篇文章的评论中(引用):

-如果Dispatcher所做的只是启动另一个线程,那么使用Dispatcher有什么意义?
..这些线程不需要在UI线程上启动。您可以使用常规计时器,避免完全中断UI

什么是“定时定时器”?它们(“Dispatcher”和“regular Timer”)对UI的影响如何不同?

(在读到这篇文章之前,我一直认为Dispatchermer是WPF中使用计时器的一种自然方式。如果不是这样,会发生什么情况?)

Dispatchermer是常规计时器。它在UI线程上触发勾号事件,您可以对UI执行任何操作。System.Timers.Timer是一个异步计时器,其已用事件在线程池线程上运行。在事件处理程序中必须非常小心,不允许接触任何UI组件或数据绑定变量。在访问UI线程上使用的类成员时,需要使用lock语句

在链接的答案中,Timer类更合适,因为OP试图异步运行代码

发表评论