在应用系统开发的过程中,难免会出现各种各样定时任务来处理各项业务,这个时候我们就需要想办法来完成定时处理功能。
定时处理方法有多种,可以写个windows应用程序来执行定时处理任务,也可以在web系统的global文件中写定时处理任务,还可以写一个windows服务来完成定时处理任务,当然方法多种,各有各的特点,现在我们来创建一个windows service实现定时处理功能。
打开vs工具,创建一个windows 服务,在Service文件中编写执行任务的代码,举例(代码中LogHelper是我自己写的记录日志功能):
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;
using System.Text;
using System.Threading;
namespace WindowsServiceTest
{
public partial class Service1 : ServiceBase
{
private Thread threadSMS;
private bool isEnable = true; //是否启用短信日报发送功能
public Service1()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
try
{
if (isEnable)
{
LogHelper.WriteInfoLog(DateTime.Now.ToString() + "-----测试服务启动成功!");
threadSMS = new Thread(new ThreadStart(SendSMS));
threadSMS.Start();
}
else
{
LogHelper.WriteInfoLog(DateTime.Now.ToString() + "-----短信服务未启动!");
}
}
catch (Exception exp)
{
LogHelper.WriteErrorLog("日报发送出错:" + exp.Message);
}
}
protected override void OnStop()
{
LogHelper.WriteInfoLog(DateTime.Now.ToString() + "-----测试服务停止!!!!");
threadSMS.Abort();
threadSMS = null;
}
private void SendSMS()
{
while (true)
{
Thread.Sleep(TimeSpan.FromSeconds(10));
LogHelper.WriteInfoLog(DateTime.Now.ToString() + "-----Congratulations, SMS sent successfully!");
}
}
}
}
编译通过后,生成应用,接下来就是注册这个服务。
网上找了下,注册服务的方法有很多,但是讲解的都比较麻烦,我归纳了下,制作了注册方法,省去了繁琐的dos命令行注册过程。
服务注册为windows服务,方法如下:
注册 :将下面的这段命令制作成一个bat文件,点击执行即可
sc create ServiceDemo binpath= 文件目录\文件名.exe start= auto
pause
注册好了可以到系统服务中去查看该服务是否已经添加到系统服务中,注册完成后第一次启用需要人工启动,以后则可以实现开机自动启动。
当你不再使用该服务的时候则需要卸载该服务,方法如下:
卸载 :同样制作成bat文件,点击执行
C:\Windows\Microsoft.NET\Framework\v2.0.50727\installutil /u 文件目录\文件名.exe
pause
当然,以上应用是基于.net framework 2.0开发的。
以上就是.net 开发windows服务系统的过程,注册和卸载看上去确实方便快捷。