• System.Windows.Forms.Timer、System.Timers.Timer、System.Threading.Timer的差别和分别什么时候用


    System.Windows.Forms.Timer、System.Timers.Timer、System.Threading.Timer的 区别和用法
    http://space.itpub.net/12639172/viewspace-571197

    http://msdn.microsoft.com/en-us/magazine/cc164015.aspx

    ==================================================

    System.Windows.Forms.Timer执行的时候,如果你在过程中间加一个sleep整个的界面就死掉了,

    但是另外两个没有这个情况,System.Timers.Timer、System.Threading.Timer!

    System.Timers.Timer、System.Threading.Timer这两个平时用的时候没有发现太大的区别,定时的精度都差不多。

    一般我个人用的话,还是用的System.Threading.Timer比较多,用编程的方法比较好用!

    System.Windows.Forms.Timer是基于UI的
    System.Timers.Timer是基于服务
    System.Threading.Timer是基于线程

    除了Timer只能用于界面,其他的事在没看出区别 

    System.Windows.Forms.Timer 还有 wpf那个timer 是单线程的 单次运行时间过长会影响下次触发 精度差


    System.Threading.Timer   都是多线程的 单次运行时间过长不会影响下次触发

    精度高

    System.Threading.Timer 是一个简单的轻量计时器,它使用回调方法并由线程池线程提供服务。不建议将其用于 Windows 窗体,因为其回调不在用户界面线程上进行。System.Windows.Forms.Timer 是用于 Windows 窗体的更佳选择。要获取基于服务器的计时器功能,可以考虑使用 System.Timers.Timer,它可以引发事件并具有其他功能。 

    在《CLR Via C#》中讲多线程时有提到这3个计时器,但作者说System.Timers.Timer是对System.Threading.Timer的报装,不推荐使用,但是在我的WEB项目中的Application_Start中我还是使用的这个而不是Threading.Timer,因为使用Threading.Timer时只执行了一次就不在执行了。 

    对于计时器在B/S结构中的使用就复杂一些,一般我们把计时器放在Application_OnStart中,这样全局维护一个计时器,可以进行定期备份数据库,定期维护用户等操作,而且方法写作静态的,以免被垃圾回收。而不建议在一般的aspx页面中使用,因为服务器端的定时器对用户这样意义不大,完全可以使用JS代替。而且这个页面的每个请求都可能引入一个新的定时器,导致系统崩溃。另外,定时器是ASP.NET进程,IIS有关,所以对用重要的执行任务,还是建议写成服务或独立程序放在服务器上执行好了。 

    http://blog.itpub.net/12639172/viewspace-571197

  • 相关阅读:
    关于OCI接口理解
    linux 关闭selinux
    Web 浏览器之事件循环 Event Loop
    Web 浏览器之页面展示原理
    Web 前端工程化(Node、Babel、webpack、Vue、Nginx)
    Web 包管理工具(npm、yarn、cnpm、pnpm)
    kmeans算法
    Django_re_path_使用正则匹配url
    VMware_关机未关闭vm导致显示红叉的处理方法
    Django_发送邮件
  • 原文地址:https://www.cnblogs.com/tianciliangen/p/4910503.html
Copyright © 2020-2023  润新知