用C#做Windows服务时,一般都是用在定时处理某些事情的情况下。
比如以下情况:
1、每天定点执行一次。比如:每天晚上12点对当天的订单数据统计报表。
2、每隔一定时间不间段执行。比如:每隔1小时发布系统消息。
3、自动处理单订。比如:有单订产生,立即处理。(当然,可能要有一定延时。时间越精确,当然数据库的扫描压力就越大)
实现思路1:计时器(设置Interval参数:默认为毫秒,1小时=60*60*1000)
实现思路2:计时器启动执行一次+While(true)+Thread.Sleep(时间);
在网上有人说第二种方法效果要好,我也没去测试。
下面我们看具体步骤:
1、创建服务。(此处该省的要省)
上个图:
在这,所有的命名都采用默认的。
2、在我们的服务中编写代码:打开Services1.cs。
模式1代码:
partial class Service1 : ServiceBase { public Service1() { InitializeComponent(); } System.Timers.Timer timer1; //计时器 //这种模式:表示服务在每秒中处理1次业务逻辑 protected override void OnStart(string[] args) { // TODO: 在此处添加代码以启动服务。 timer1 = new System.Timers.Timer(); timer1.Interval = 1000; //设置计时器事件间隔执行时间 timer1.Elapsed += new System.Timers.ElapsedEventHandler(timer1_Elapsed); timer1.Enabled = true; } private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { //要处理的业务逻辑 } protected override void OnStop() { // TODO: 在此处添加代码以执行停止服务所需的关闭操作。 this.timer1.Enabled = false; } }
3、添加并配置安装服务
在Services1.cs的设置模式下“添加安装程序”。系统会自动创建两个组件:serviceProcessInstaller1和serviceInstaller1
下面介绍下这两个组件的基本配置:我比较喜欢贴图
serviceProcessInstaller1:
serviceInstaller1:
4、生成、部署服务。
在.Net Framework的命令窗口: installutil D:\WindowsService1.exe 即可完成安装服务(注绝对路径)
在.Net Framework的命令窗口: installutil /uninstall D:\WindowsService1.exe 即可删除服务(注绝对路径)
哈哈,搞定,安装完成,现在去Windows服务里有没有成功。下面就是见证服务的时刻:
删除服务我就不演示了,因为我相信你懂的。
由于安装过程比较复杂,可以写一个批处理,只要把服务文件的路径写上去就行。
本篇只为介绍大家创建Windows服务的基本步骤。谢谢... 须要源码的人可以@我。