Timer VS DispatcherTimer
2024-10-21 11:30:57
Timer是在ThreadPool线程池中执行的,每当计时器到期时,就会创建一个线程来执行事件处理程序。这种实现方式可能会导致一些问题,例如计时器事件处理程序可能会与主线程竞争资源,从而导致性能问题。此外,如果计时器事件处理程序抛出未处理的异常,那么将导致应用程序崩溃。
相比之下,DispatcherTimer是基于UI线程的,它使用WPF和Silverlight的Dispatcher机制,计时器事件处理程序在UI线程上运行。这种实现方式确保了事件处理程序不会与主线程竞争资源,从而避免了性能问题,并且如果事件处理程序抛出未处理的异常,应用程序也不会崩溃。
因此,如果你的应用程序是WPF或Silverlight应用程序,并且你需要在UI线程上定时执行某个操作,那么你应该使用DispatcherTimer。如果你不需要在UI线程上执行操作,或者你正在编写一个控制台应用程序或Windows服务,那么你可以使用Timer。
总结一句话
DispatcherTimer 相对来说他是在UI线程上跑,且异常正常抛 不嘣,而timer 就不同了。
同时想想 winform 下的 Timer 控件又是什么呢?
最新文章
- UiAutomator自动化测试框架介绍
- POJ2553 The Bottom of a Graph(强连通分量+缩点)
- Java 反射机制学习资料
- php文件复制
- 然爸读书笔记(2014-10)----Bootsrap用户手册
- FreeBSD方式安装 MAC OSX
- Linux 安全
- 对编程语言的需求总结为四个:效率,灵活,抽象,生产率(C++玩的是前三个,Java和C#玩的是后两个)
- ASP.NET 开发框架汇总
- Struts2详解
- javascript获取整数随机数
- 删除Oracle用户及表空间
- MySQL 索引与查询优化
- ZooKeeper系列(4):ZooKeeper的配置文件详解
- 【BZOJ】3282: Tree(lct)
- snort学习笔记
- Modelsim se仿真Xilinx IPcore
- wikioi 1576 最长严格上升子序列
- 004-spring cache-声明性的基于XML的缓存
- Python笔记 #17# Pandas: Merge