- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
NET中的三种Timer的区别和用法(DOC可编).doc
.NET中有3个不同的定时器。这3个定时器分别是:?//1.实现按用户定义的时间间隔引发事件的计时器。此计时器最宜用于 Windows 窗体应用程序中,并且必须在窗口中使用。?System.Windows.Forms.Timer?// 2.提供以指定的时间间隔执行方法的机制。无法继承此类。?System.Threading.Timer?//3.在应用程序中生成定期事件。?System.Timers.Timer?这三个定时器位于不同的命名空间内,上面大概介绍了3个定时器的用途,其中第一个是只能在Windows窗体中使用的控件。在.NET1.1里面,第3个System.Timers.Timer,也是可以拖拽使用,而.NET2.0开始取消了,只能手动编写代码。而后2个没有限制制。下面通过具体的列子来看3个Timer的使用和区别,网上谈的很多,但基本都没有代码。?一 System.Windows.Forms.Timer?#region System.Windows.Forms.Timer?public partial class Form1 : Form?{?public Form1()?{?InitializeComponent();?}?int num = 0;?private void Form_Timer_Tick(object sender, EventArgs e)?{?label1.Text = (++num).ToString();?Thread.Sleep(3000);?}?private void button1_Click(object sender, EventArgs e)?{?Form_Timer.Start();?}?private void button2_Click(object sender, EventArgs e)?{?Form_Timer.Stop();?}?}?#endregion?上面这个是一个很简单的功能,在Form窗体上拖了一个System.Windows.Forms.Timer控件名字为Form_Timer,在属性窗中把Enable属性设置为Ture,Interval是定时器的间隔时间。双击这个控件就可以看到 Form_Timer_Tick方法。在这个方法中,我们让她不停的加一个数字并显示在窗体上,2个按钮提供了对计时器的控制功能。?执行的时候你去点击其他窗体在回来,你会发现我们的窗体失去响应了。因为我们这里使用Thread.Sleep(3000);让当前线程挂起,而UI失去相应,说明了这里执行时候采用的是单线程。也就是执行定时器的线程就是UI线程。?Timer 用于以用户定义的事件间隔触发事件。Windows 计时器是为单线程环境设计的,其中,UI 线程用于执行处理。它要求用户代码有一个可用的 UI 消息泵,而且总是在同一个线程中操作,或者将调用封送到另一个线程。?在Timer内部定义的了一个Tick事件,我们前面双击这个控件时实际是增加了一行代码?this.Form_Timer.Tick += new System.EventHandler(this.Form_Timer_Tick);?这个应该明白,不明白的可以看我BLOG中有关委托和事件的文章。然后Windows将这个定时器与调用线程关联(UI线程)。当定时器触发时,Windows把一个定时器消息插入到线程消息队列中。调用线程执行一个消息泵提取消息,然后发送到回调方法中(这里的Form_Timer_Tick方法)。而这些都是单线程进行了,所以在执行回调方法时UI会假死。所以使用这个控件不宜执行计算受限或IO受限的代码,因为这样容易导致界面假死,而应该使用多线程调用的Timer。另外要注意的是这个控件时间精度不高,精度限定为 55 毫秒。我们把Interval设置为20ms,然后在start和stop方法中记录当前时,并计算出运行时间:?从上面图可以看到程序执行了7.8S也就是 7800ms,而间隔时间是20ms,也就是最后显示数字应该是390左右,但只有250,显然是不准确的,不过按MSDN说的55ms的精度,7800ms应该只执行了140多次或更少。不知道这里是不是理解有问题。?二 System.Timers.Timer?接下来就看下另一个Timer,我们用他来改写上面的程序?#region System.Windows.Forms.Timer?public partial class Form1 : Form?{?public Form1()?{?InitializeComponent()
您可能关注的文档
- ModuleSectionⅡIntroduction&ReadingandVocabulary—LanguagePoints.ppt
- ModuleTheInternetandTelecommunications.ppt
- ModuleTheWorld’sCulturalHeritage学案外研版选修(DOC可编).doc
- ModuleunitThecamelthatIrodehadabadtemper(DOC可编).doc
- ModuleUnit复习课件.ppt
- Module词汇与语法(DOC可编).doc
- MODY—你不知道的非型非型糖尿病(DOC可编).doc
- mol巩固练习(DOC可编).doc
- Moniter临床监查报告模板(DOC可编).doc
- Monki总部办公空间(DOC可编).doc
- 光的反射和成像如何解释光的反射和成像 (2).pptx
- Unit3Grammar语法课件牛津深圳版八年级英语下册.pptx
- 优化护理流程在STEMI急诊PCI救治中的效能研究.pptx
- Unit2SectionA2a2d课件人教版英语九年级全册2.pptx
- 第二章声现象拔尖专训3 声现象探究课件人教版物理八年级上册.pptx
- Unit5Poems重点词汇详解语法重点句式知识清单-高中英语人教版选择性.docx
- 1.3课时1常见的分散系胶体课件高一上学期化学2.pptx
- XX企业行业运营管理问题调查及对策研究.pptx
- 1.1认识负数(教学课件)七年级数学上册考试满分全备考(2024).pptx
- 体积的测量练习七年级上册科学(浙教版).docx
文档评论(0)