今天写了一个定时执行的windows服务项目,这里记录一下,所用软件VS2013,
首先打开VS2013,选择文件->新建->项目,然后选择Visual C#下的windows然后找到windows 服务,然后选择创建,便创建了项目,
在service1设计器中点击右键,选择查看代码,然后在
onStart()函数中添加如何下代码:
protected override void OnStart(string[] args)
{
EventLog.WriteEntry("守护进程服务启动!");//在系统事件查看器中里的应用称故乡时间来源的描述
WriteLog("守护进程服务程序启动!");//自定义文本日志
System.Timers.Timer tr = new System.Timers.Timer();//定时器
tr.Interval = 1000;//设置时间间隔为1秒
tr.Elapsed += new System.Timers.ElapsedEventHandler(ChkSrv);//到达时间就执行的事件
tr.AutoReset = true;//设置是执行一次false,还是一直执行true
tr.Enabled= true;//时候执行System.Timers.ElapsedEvent事件
}
{
EventLog.WriteEntry("守护进程服务启动!");//在系统事件查看器中里的应用称故乡时间来源的描述
WriteLog("守护进程服务程序启动!");//自定义文本日志
System.Timers.Timer tr = new System.Timers.Timer();//定时器
tr.Interval = 1000;//设置时间间隔为1秒
tr.Elapsed += new System.Timers.ElapsedEventHandler(ChkSrv);//到达时间就执行的事件
tr.AutoReset = true;//设置是执行一次false,还是一直执行true
tr.Enabled= true;//时候执行System.Timers.ElapsedEvent事件
}
这个函数也就是服务启动的时候运行的,
然后在
onStop()函数中添加如下代码:
protected override void OnStop()
{
WriteLog("服务停止");
}
{
WriteLog("服务停止");
}
public void ChkSrv(object source,System.Timers.ElapsedEventArgs e)
{
int second = e.SignalTime.Second;
if (second==00)
{
{
int second = e.SignalTime.Second;
if (second==00)
{
System.Timers.Timer tt = (System.Timers.Timer)source;
tt.Enabled = false;
WriteLog("测试开始!");
WriteLog("测试开始!");
tt.Enabled = true;
}
}
然后在service1的设计器中点击右键,选择添加安装程序,在安装程序中选择serviceProcessInstaller,查看属性,将Account改为LocalSystem,
在安装程序中选择secviceInstaller1,查看其属性,修改ServiceName,这个名字将显示在服务中,
然后选中项目,右键生成项目,然后在debug目录下,找到执行程序,然后在C:\Windows\Microsoft.NET\Framework\v4.0.30319目录下,找到InstallUtil.exe
这里我的程序所用框架是.net4.0以上版本,如果用的是其他版本,就在Framework文件下,查找,
然后以管理员身份打开命令行窗口,在窗口中输入:D:\项目\WindowsServiceTest\WindowsServiceTest\bin\Debug\InstallUtil.exe D:\项目\WindowsServiceTest\WindowsServiceTest\bin\Debug \WindowsServicetest.exe就可以把服务成功安装了!