C#中有5个timer,它们的主要区别如下:

  1. System.Threading.Timer  在线程池启动一个后台任务。我前段时间写过一个关于timer的垃圾回收的需要注意一下,参见谁动了我的timer?。
  2. System.Windows.Forms.Timer  告诉windows把一个计时器和调用它的线程(UI线程)关联起来,通过往UI线程的消息队列里放一个WM_TIMER的消息来实现,所以它的callback一定是在UI线程调用的,不存在多线程调用的问题。
  3. System.Windows.Threading.DispatcherTimer 用在WPF和Silverlight中,对应于System.Windows.Forms.Timer。
  4. Windows.UI.Xaml.Dispatchertimer 用在windows store app中,对应于System.Windows.Forms.Timer。
  5. System.Timers.Timer 包装了一下System.Threading.Timer,使它有了和System.Windows.Forms.Timer类似的接口,而且也能在visual studio的toolbox designer里找到。它也是在线程池中执行,但是如果你是在visual studio的designer中使用它,visual studio会自动把它所在的control设为这个timer的SynchronizingObject,这样就会保证callback会在UI线程调用了。Jeffrey Richter不建议使用它,建议直接用System.Threading.Timer。这个timer也有个坑,参见.NET 2.0的Timer elapsed event 会自动catch住所有的exception。

Comparing the Timer Classes in the .NET Framework Class Library也比较了3中timer(System.Threading.Timer ,System.Windows.Forms.Timer和System.Timers.Timer),并且画了个如下的表格。

  System.Windows.Forms System.Timers System.Threading
Timer event runs on what thread? UI thread UI or worker thread Worker thread
Instances are thread safe? No Yes No
Familiar/intuitive object model? Yes Yes No
Requires Windows Forms? Yes No No
Metronome-quality beat? No Yes* Yes*
Timer event supports state object? No No Yes
Initial timer event can be scheduled? No No Yes
Class supports inheritance? Yes Yes No
* Depending on the availability of system resources (for example, worker threads)
 

转载于:https://www.cnblogs.com/fresky/p/3180604.html

C#中5中timer的比较相关推荐

  1. java项目中多个定时器_在java项目中如何使用Timer定时器

    在java项目中如何使用Timer定时器 发布时间:2020-11-16 16:36:16 来源:亿速云 阅读:97 作者:Leah 在java项目中如何使用Timer定时器?很多新手对此不是很清楚, ...

  2. java中GUI中显示当前时间_javaGUI界面实现动态时间显示——Swing中的计时器Timer

    在Java中要实现时间的动态显示有不少种方法.下面就介绍其中一种简单的方法给你们.java Swing中的计时器Timer,主要用到javax.swing.*包下的Timer类,该类能够周期的触发Ac ...

  3. win10html5无法播放,win10系统中网页中无法播放视频怎么办

    近日有win10系统用户要通过浏览器来打开网页观看视频的时候,却发现在网页中打开视频的时却无法播放,这是怎么回事呢,经过分析是由于Adobe Flash Player ActiveX插件未安装.版本过 ...

  4. Oracle EBS R12 运行adadmin 安装中文语言包过程中意外中断后的处理

    介绍Oracle EBS R12 运行adadmin 安装中文语言包过程中意外中断后的处. Oracle EBS R12 运行adadmin 安装中文语言包过程中意外中断或关机后,重新开机,运行数据库 ...

  5. Python中sklearn中HistGradientBoostingRegressor回归器配置单调约束参数monotonic_cst提高回归模型的抗噪声以及局部扰动的能力

    Python中sklearn中HistGradientBoostingRegressor回归器配置单调约束参数monotonic_cst提高回归模型的抗噪声以及局部扰动的能力 目录

  6. mysql 去掉日期.0_简单介绍MySQL数据库中日期中包含零值的问题

    下面小编就为大家带来一篇浅谈MySQL数据库中日期中包含零值的问题.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 默认情况下MySQL是可以接受在日期中插入0值,对于现 ...

  7. 通过Spring配置文件中bean中的property赋值

    基本数据类型赋值-通过spring配置文件中bean中的property 扩展-以此方式可以通过配置为连接数据的属性赋值 1.如果是基本数据类型,可以通过setter方法为对象中的属性设置初始值,应用 ...

  8. pythonlambda内判定_python lambda和列表推导式判断列表中元素中指定值得max

    今天提了个需求 说有一个商品列表 需要提取中元素中金额的最大值 废话不多说直接上码 # 假如现在有个商品列表 class ProductSeatMock(object): def __init__(s ...

  9. java string 连续字符_Java中字符串中连续相同字符去重方法

    导读 正文 最近参加了一个面试,问到了如何在一个字符串中连续相同字符去重,想了想用正则表达式应该可以轻松实现.可是由于长时间没有编码了,而且由于原先的工作用到的比较少.具体的自己就不会写正则表达式用到 ...

  10. QT 中 界面中消息的停留时间解决方案 以及 label 中字体大小和换行设置

    QT 中 界面中消息的停留时间解决方案 以及 label 中字体大小和换行设置 参考文章: (1)QT 中 界面中消息的停留时间解决方案 以及 label 中字体大小和换行设置 (2)https:// ...

最新文章

  1. DOS 循环 FOR
  2. linux wget 下载文件 报错 To connect to xxxx, use ‘--no-check-certificate’ 解决方法
  3. NeedforSpeed:SHIFT
  4. [UE4]多个Montage之间存在协作问题
  5. 如何改变php的语言变中文,修改Yii2的默认语言language为中文zh-CN的方法
  6. ConcurrentHashMap深度分析(JDK 1.8版本)
  7. 计算机网络由边缘和( )两大部分组成,计算机网络期末总复习资料分章节
  8. Beetl学习总结(4)——Web集成
  9. 函数用法r语言_R语言中的apply函数族
  10. oracle c6,redhat6.8系统下安装oracle数据库
  11. rhel7 ifconfig command not found
  12. 还在忍受磁力搜索网站不忍直视的广告么?18年最新最好用的bt磁力搜索网站介绍
  13. 记蓝墨云班课APP逆向及利用
  14. dx12 龙书第五章学习笔记 -- 渲染流水线
  15. 每台计算机的ip地址解析,ip地址是什么?【详解】
  16. 深圳靠谱的python培训机构排名
  17. python推箱子游戏顶层设计子层设计_python实现推箱子游戏
  18. 接入支付宝电脑网站支付实现JAVA版
  19. C++将小数化成分数
  20. MBR30200FCT低压降肖特基二极管ASEMI原装

热门文章

  1. python更改数据框指定位置的数据_python-如何使用来自另一个数据框的新值更新pyspark数据框?...
  2. json在java中的使用_在Java中使用JSON
  3. php用栈遍历目录和文件,php如何遍历目录,php非递归算法遍历目录的例子
  4. 256qam调制星座图_科普:5G是怎么调制的?
  5. yum install / yum localinstall
  6. 设置matlab默认工作路径
  7. 吴恩达深度学习4.1练习_Convolutional Neural Networks_Convolution_model_StepByStep_1
  8. 这7本O’Reilly推出的免费Python电子书,够你看了
  9. 【须弥SUMERU】宜信分布式安全服务编排实践
  10. win10 python 3.7 pip install tensorflow