开发中有可能会遇到写Windows服务,特别是定时自动运行的服务,比如定时邮件、定时操作数据库、消息队列等等。
1、创建Windows服务项目(下图)
2、编写服务的相关代码(这里我直接贴出我的完整代码)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Threading.Tasks;
using System.Timers;
namespace WindowsServiceDemo
{
public partial class ServiceMain : ServiceBase
{
/// <summary>
/// 声明定时器
/// </summary>
private Timer timer1;
public ServiceMain()
{
InitializeComponent();
}
/// <summary>
/// 服务开启的时候调用
/// </summary>
/// <param name="args"></param>
protected override void OnStart(string[] args)
{
//服务开启的时候初始化定时器
this.timer1 = new Timer();
this.timer1.Enabled = true;
this.timer1.Interval = 2000; //间隔时间(毫秒) 这里是表示2秒调用一次
this.timer1.Elapsed += Timer1_Elapsed; //触发的事件
}
/// <summary>
/// 服务停止的时候调用
/// </summary>
protected override void OnStop()
{
if (this.timer1 != null)
this.timer1 = null;
}
/// <summary>
/// 定时器触发的事件,也就是每次做什么事情
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Timer1_Elapsed(object sender, ElapsedEventArgs e)
{
//禁用定时器
this.timer1.Enabled = false;
try
{
//具体要做的事情,比如操作数据库等等
}
catch (Exception ex)
{
}
//开启定时器
this.timer1.Enabled = true;
}
}
}
3、添加安装程序(下图)
4、针对服务进行设置,比如名称、启动方式等等(下图)
针对设置说明:
将Account的值改为LocalSystem。其他的不用修改
针对设置说明:
ServiceName:表示服务的名称,这个名称将会显示在Windows的服务列表中, 这里设置成了“ServiceTestName”
Description:表示针对该服务的说明,这个名称将会显示在Windows的服务列表中。
StartType:表示服务的启动方式,Automatic 是自动启动(在Windows的服务中可以设置)
5、生成成功以后将服务安装到Windows中。这里需要通过Windows的命令来操作(下图)
选中图中 VS2015 开发人员命令提示。
将目录定位到项目的bin\Debug目录下面 输入命令:“ installutil WindowsServiceDemo.exe ” 。其中的exe名称是你项目的名称 (下图)
如果提示成功就表明服务已经安装成功了,如果发生错误也会有相对应的提示。
6、在Windows的服务中开启刚才安装的服务(下图),直接启用就好了。
这个时候在任务管理器里面就能看见相关的进程,注意进程的名称是项目的名称不是服务的名称
7、卸载服务。运行命令“ installutil /u WindowsServiceDemo.exe ” 。其中的exe名称是你项目的名称 (下图)
发布者:IT柚子,转转请注明出处:https://ityouzi.com/archives/csharp-windows-service-demo.html

微信扫一扫
支付宝扫一扫