Timer VS DispatcherTimer

Timer是在ThreadPool线程池中执行的,每当计时器到期时,就会创建一个线程来执行事件处理程序。这种实现方式可能会导致一些问题,例如计时器事件处理程序可能会与主线程竞争资源,从而导致性能问题。此外,如果计时器事件处理程序抛出未处理的异常,那么将导致应用程序崩溃。

相比之下,DispatcherTimer是基于UI线程的,它使用WPF和Silverlight的Dispatcher机制,计时器事件处理程序在UI线程上运行。这种实现方式确保了事件处理程序不会与主线程竞争资源,从而避免了性能问题,并且如果事件处理程序抛出未处理的异常,应用程序也不会崩溃。

因此,如果你的应用程序是WPF或Silverlight应用程序,并且你需要在UI线程上定时执行某个操作,那么你应该使用DispatcherTimer。如果你不需要在UI线程上执行操作,或者你正在编写一个控制台应用程序或Windows服务,那么你可以使用Timer。
总结一句话
DispatcherTimer  相对来说他是在UI线程上跑,且异常正常抛 不嘣,而timer 就不同了。

同时想想 winform 下的 Timer 控件又是什么呢?

posted @ 2023-03-03 10:14  stweily  阅读(100)  评论(0编辑  收藏  举报