Windows Service下的Timer计时器的使用

在C#中提供了三种类型的计时器:
1、基于 Windows 的标准计时器(System.Windows.Forms.Timer)
2、基于服务器的计时器(System.Timers.Timer)
3、线程计时器(System.Threading.Timer)

一、基于 Windows 的标准计时器(System.Windows.Forms.Timer)

首先注意一点就是:Windows 计时器是为单线程环境设计的
此计时器从Visual Basic 1.0 版起就存在于该产品中,并且基本上未做改动
这个计时器是使用最简单的一种,只要把工具箱中的Timer控件拖到窗体上,然后设置一下事件和间隔时间等属性就可以了

二、基于服务器的计时器(System.Timers.Timer)

System.Timers.Timer不依赖窗体,是从线程池唤醒线程,是传统的计时器为了在服务器环境上运行而优化后的更新版本,在VS2008的工具箱中没有提供现成的控件,需要手工编码使用此计时器

三、线程计时器(System.Threading.Timer)

线程计时器也不依赖窗体,是一种简单的、轻量级计时器,它使用回调方法而不是使用事件,并由线程池线程提供支持。对消息不在线程上发送的方案中,线程计时器是非常有用的。
这里只对基于服务器的计时器做一下简单介绍,有兴趣的朋友可以查看相关资料;

第一次写这个windows服务程序时,我用的是第一种计时器,结果可想而知,没有达到我想要的结果,服务程序并没有听从我的指挥而乖乖得执行相应的功能,结果找了一些资料发现服务程序中建议不要使用 System.Windows.Forms.Timer 组件,因为它可能会产生不可预料的“罢工”问题;应使用System.Timer 组件;缺点是它和System.Windows.Forms.Timer不同,它需要手工编写事件,它是使用Elapsed事件
代码实现时这样的:
 System.Timers.Timer timer = new System.Timers.Timer(600000);
 protected override void OnStart(string[] args)
        {           
            timer.Elapsed+=new System.Timers.ElapsedEventHandler(timer_Elapsed);//使用Elapsed事件,其中timer_Elapsed就是你需要处理的事情

            timer.AutoReset = true;
            timer.Enabled = true;
        }
 private void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            ///
            ///   功能代码
            ///
        }

转载于:https://www.cnblogs.com/zagelover/articles/4185192.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/292196.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux c 之使用-O来优化gcc

比如一般文件编译 gcc bfs.c -o bfs然后查看花了多少时间 time ./bfs 然后看结果 使用-O 优化,输入下面命令 gcc -O bfs.c -o bfs 再看所需时间,输入下面命令 time ./bfs 结果如图 我们还可以进一步优化用 -O1 -O2 -O3,列如 gcc -O2 bfs.c -…

Hbase Java API详解

2019独角兽企业重金招聘Python工程师标准>>> HBase是Hadoop的数据库,能够对大数据提供随机、实时读写访问。他是开源的,分布式的,多版本的,面向列的,存储模型。 在讲解的时候我首先给大家讲解一下HBase的整…

对C#未来的一点感悟

01—C#有前途吗?在国内C#比较冷门(相对Python、Java),很多初学者可能都会对C#的未来有忧虑,害怕没有前途,担心找不到好的工作。其实,大可必须这样,就我在上海而言,我之前…

python 框架 优化_python+unittest框架第六天unittest之优化测试报告

今天的内容主要是,用第三方的HTMLRUNner 第三方的报告来优化之前第五天批量执行案例的测试报告。案例的部分看第五天的批量执行笔记~HTMLRUNner他可以生成更美观的测试报告,基于前辈造的车子,我们直接改造使用。先看下运行代码部分&#xff1…

linux c的连接库和怎么同时编译多个源程序

1、理解库函数 库函数有头文件和库文件(so 或者 a)的集合 1)头文件的默认目录 /usr/include 2)库文件的默认目录 /user/lib 3)linux的库文件分为动态连接库(.so)和静态连接库(.a) 他们之间的差距在于程序执行时所需代码是运行时加载的,海山编译是静态加载的,默认情况下…

2023年12月青少年机器人技术等级考试(四级) 实操试卷

主题:TT马达转速感应装置 器件:Atmega328P主控板1块,TT马达1个,直流电机驱动芯片或模块1个,超声波传感器1个,LED灯2个(分别为LED_A和LED_B)及相应辅件。以上模块也可使用分立器件结合…

在C#中的各种应用

1.怎么解决在C中的#define的预编译 比如在C#想将DataType全都替换成Int using DataTypeSystem.Int32;将上面一句放在开头就行了 2.在字符串中声明一个字符串数组 int count5; string[] stringArraynew string[count];这样就行了转载于:https://www.cnblogs.com/chenbuer/p…

微软第二财季营收达 517 亿美元,净利润同比增长 21%

微软今日发布了 2022 财年第二财季财报,营收为 517.28 亿美元,与去年同期的 430.76 亿美元相比增长 20%。净利润为 187.65 亿美元,与去年同期的 154.63 亿美元相比增长 21%。生产力和业务流程部门的营收为 159.36 亿美元,与去年同…

python开源考试_Github 上 10 个值得学习的 Springboot 开源项目

spring Boot 几乎继承了所有 Spring 框架的优点,同时还可以让项目的配置更简化、编码更简化、部署更方便。近两年受到很多开发者的追捧,也是火热的不行!下面给大家整理了 10 个 Github 上最值得学习的 Springboot 开源项目,帮助大…

二值图像--形态学处理3 开操作和闭操作

学习DIP第13天 转载请标明出处:http://blog.csdn.net/tonyshengtan,欢迎大家转载,发现博客被某些论坛转载后,图像无法正常显示,无法正常表达本人观点,对此表示很不满意。。。。。。。。 开篇废话 简单来说所…

Linux查看硬件信息很Easy

往往一到公司盘点或升级服务器硬件时候,需要记录服务器的具体硬件信息,对于Windows下来说,装个鲁大师既可以查看所有硬件信息,但Linux下要想查看这些硬件信息要麻烦的多,下面是我整理的一些命令,再查看Linu…

常见正则表达式

2019独角兽企业重金招聘Python工程师标准>>> ip地址 /^(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(…

WPF 实现动态Windows桌面壁纸~

由于微信群人数太多入群请添加小编微信号yanjinhuawechat 或 W_Feng_aiQ 邀请入群需备注WPF开发者 PS:有更好的方式欢迎推荐。此项目灵感来源于 丑萌气质狗 B站同名 QQ群:560611514 (学习Unity3D)增加了播放视频。01—代码如下一…

linux c用open打开(创建)一个文件

1、文件描述符 Linux操作系统内核(kernel)利用文件描述符来访问文件,文件描述符大于等于0,是一个用户描述被打开文件的索引值,它指向该文件的相关信息记录表,当文件打开或者创建新文件的时,就会返回一个文件描述符,当读写文件时,也需要使用文件描述符来指定特写文件。…

TCP的TIME_WAIT状态

主动关闭的Socket端会进入TIME_WAIT状态,并且持续2MSL时间长度,MSL就是maximum segment lifetime(最大分节生命期),这是一个IP数据包能在互联网上生存的最长时间,超过这个时间将在网络中消失。MSL在RFC 1122上建议是2分…

python任务调度平台 界面_分布式任务调度平台XXL-JOB

以前带我的人说过,最好的学习就是看官方文档,个人也有4个T的学习视频,但是会发现讲的都是入门,有的也比较浅。官方文档比较官方,也比较权威,打开xxl-job的官网,写的贼详细,有些人喜欢…