C#中5中timer的比较
C#中有5个timer,它们的主要区别如下:
- System.Threading.Timer 在线程池启动一个后台任务。我前段时间写过一个关于timer的垃圾回收的需要注意一下,参见谁动了我的timer?。
- System.Windows.Forms.Timer 告诉windows把一个计时器和调用它的线程(UI线程)关联起来,通过往UI线程的消息队列里放一个WM_TIMER的消息来实现,所以它的callback一定是在UI线程调用的,不存在多线程调用的问题。
- System.Windows.Threading.DispatcherTimer 用在WPF和Silverlight中,对应于System.Windows.Forms.Timer。
- Windows.UI.Xaml.Dispatchertimer 用在windows store app中,对应于System.Windows.Forms.Timer。
- 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的比较相关推荐
- java项目中多个定时器_在java项目中如何使用Timer定时器
在java项目中如何使用Timer定时器 发布时间:2020-11-16 16:36:16 来源:亿速云 阅读:97 作者:Leah 在java项目中如何使用Timer定时器?很多新手对此不是很清楚, ...
- java中GUI中显示当前时间_javaGUI界面实现动态时间显示——Swing中的计时器Timer
在Java中要实现时间的动态显示有不少种方法.下面就介绍其中一种简单的方法给你们.java Swing中的计时器Timer,主要用到javax.swing.*包下的Timer类,该类能够周期的触发Ac ...
- win10html5无法播放,win10系统中网页中无法播放视频怎么办
近日有win10系统用户要通过浏览器来打开网页观看视频的时候,却发现在网页中打开视频的时却无法播放,这是怎么回事呢,经过分析是由于Adobe Flash Player ActiveX插件未安装.版本过 ...
- Oracle EBS R12 运行adadmin 安装中文语言包过程中意外中断后的处理
介绍Oracle EBS R12 运行adadmin 安装中文语言包过程中意外中断后的处. Oracle EBS R12 运行adadmin 安装中文语言包过程中意外中断或关机后,重新开机,运行数据库 ...
- Python中sklearn中HistGradientBoostingRegressor回归器配置单调约束参数monotonic_cst提高回归模型的抗噪声以及局部扰动的能力
Python中sklearn中HistGradientBoostingRegressor回归器配置单调约束参数monotonic_cst提高回归模型的抗噪声以及局部扰动的能力 目录
- mysql 去掉日期.0_简单介绍MySQL数据库中日期中包含零值的问题
下面小编就为大家带来一篇浅谈MySQL数据库中日期中包含零值的问题.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 默认情况下MySQL是可以接受在日期中插入0值,对于现 ...
- 通过Spring配置文件中bean中的property赋值
基本数据类型赋值-通过spring配置文件中bean中的property 扩展-以此方式可以通过配置为连接数据的属性赋值 1.如果是基本数据类型,可以通过setter方法为对象中的属性设置初始值,应用 ...
- pythonlambda内判定_python lambda和列表推导式判断列表中元素中指定值得max
今天提了个需求 说有一个商品列表 需要提取中元素中金额的最大值 废话不多说直接上码 # 假如现在有个商品列表 class ProductSeatMock(object): def __init__(s ...
- java string 连续字符_Java中字符串中连续相同字符去重方法
导读 正文 最近参加了一个面试,问到了如何在一个字符串中连续相同字符去重,想了想用正则表达式应该可以轻松实现.可是由于长时间没有编码了,而且由于原先的工作用到的比较少.具体的自己就不会写正则表达式用到 ...
- QT 中 界面中消息的停留时间解决方案 以及 label 中字体大小和换行设置
QT 中 界面中消息的停留时间解决方案 以及 label 中字体大小和换行设置 参考文章: (1)QT 中 界面中消息的停留时间解决方案 以及 label 中字体大小和换行设置 (2)https:// ...
最新文章
- DOS 循环 FOR
- linux wget 下载文件 报错 To connect to xxxx, use ‘--no-check-certificate’ 解决方法
- NeedforSpeed:SHIFT
- [UE4]多个Montage之间存在协作问题
- 如何改变php的语言变中文,修改Yii2的默认语言language为中文zh-CN的方法
- ConcurrentHashMap深度分析(JDK 1.8版本)
- 计算机网络由边缘和( )两大部分组成,计算机网络期末总复习资料分章节
- Beetl学习总结(4)——Web集成
- 函数用法r语言_R语言中的apply函数族
- oracle c6,redhat6.8系统下安装oracle数据库
- rhel7 ifconfig command not found
- 还在忍受磁力搜索网站不忍直视的广告么?18年最新最好用的bt磁力搜索网站介绍
- 记蓝墨云班课APP逆向及利用
- dx12 龙书第五章学习笔记 -- 渲染流水线
- 每台计算机的ip地址解析,ip地址是什么?【详解】
- 深圳靠谱的python培训机构排名
- python推箱子游戏顶层设计子层设计_python实现推箱子游戏
- 接入支付宝电脑网站支付实现JAVA版
- C++将小数化成分数
- MBR30200FCT低压降肖特基二极管ASEMI原装
热门文章
- python更改数据框指定位置的数据_python-如何使用来自另一个数据框的新值更新pyspark数据框?...
- json在java中的使用_在Java中使用JSON
- php用栈遍历目录和文件,php如何遍历目录,php非递归算法遍历目录的例子
- 256qam调制星座图_科普:5G是怎么调制的?
- yum install / yum localinstall
- 设置matlab默认工作路径
- 吴恩达深度学习4.1练习_Convolutional Neural Networks_Convolution_model_StepByStep_1
- 这7本O’Reilly推出的免费Python电子书,够你看了
- 【须弥SUMERU】宜信分布式安全服务编排实践
- win10 python 3.7 pip install tensorflow