当我们做项目的时候,经常会遇到一种情况就是:需要隔一段时间就执行某些操作,比如数据库统计,删除多余的文件防止项目占用很多空间等等。
下面通过一个小demo来说明Windows服务与安装。
1–> 创建项目
2–> 右键点击Service1.cs,查看代码, 用于编写操作逻辑代码。逻辑代码包括两个部分,OnStart和OnStop。我们主要修改的是OnStart中的内容,即:服务开启之后执行的逻辑
3 –> 由于我们需要每隔一段时间就执行一次,一般使用timer,便于隔一段事件执行一回,在代码中添加一个timer,并实现timer的Elapsed事件。主要代码:
private System.Timers.Timer myTimer;//timer
/// <summary>
/// 重写服务OnStart方法
/// </summary>
/// <param name="args"></param>
protected override void OnStart(string[] args)
{
myTimer = new System.Timers.Timer();
myTimer.Interval = 60000; //设置计时器事件间隔执行时间
myTimer.Elapsed += (timer1_Elapsed);
myTimer.Enabled = true;
}
/// <summary>
/// 重写服务OnStop方法
/// </summary>
protected override void OnStop()
{
}
/// <summary>
/// timer
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void timer1_Elapsed(object sender, ElapsedEventArgs e)
{
try
{
DoWork();
}
catch (Exception ex)
{
}
}
//逻辑代码
void DoWork()
{
}
至此,逻辑部分代码基本就写完了。
4 –> 创建安装服务。双击解决方案中Service1,打开视图设计器。
5 –> 在视图内【右键】——-【添加安装程序】。项目中添加了ProjectInstaller.cs文件,该文件中视图自动会添加俩个组件
serviceProcessInstaller1
serviceInstaller1
6 –> 选中serviceProcessInstaller1组件,查看属性,设置account为LocalSystem
7 –> 选中serviceInstaller1组件,查看属性
设置ServiceName的值, 该值表示在系统服务中的名称
设置StartType, 如果为Manual则手动启动,默认停止,如果为Automatic为自动启动
设置Description,添加服务描述
ServiceName:该值表示在系统服务中的名称 。即红色框中的部分,这个值不能为空,否则在系统服务中找不到(以前做服务一不小心就这样了).
设置Description,添加服务描述:
让后就可以生成项目,准备安装了。
8 – > 安装服务。
a . 运行cmd,获取命令提示符win7需要已管理员的身份启动,否则无法安装
b . 由于demo的框架使用的是4.5的,所以输入 cd C:\Windows\Microsoft.NET\Framework\v4.0.30319 回车
切换当前目录,此处需要注意的是,在C:\Windows\Microsoft.NET\Framework目录下有很多类似版本,具体去哪个目录要看项目的运行环境,例 如果是.net framework2.0则需要输入 cd C:\Windows\Microsoft.NET\Framework\v2.0.50727
c . 输入 InstallUtil.exe E:…\TestServert.exe 回车
说明:E:…\TestServer.exe表示项目生成的exe文件位置
打开服务,就可以看到已经安装的服务了
9 – >卸载服务
卸载很简单,打开cmd, 直接输入 sc delete TestServer便可.删除服务的时候,E:…\TestServert.exe这个路径必须存在,否则会删除不成功。
10 – > 服务的调试:
也就是说VS中不能直接调试windows服务。调试方法:
a. 通过附加到进程调试(在网上查到过,不过没试过)
b . 创建另外的项目,单独调试服务中的方法,即demo中 DoWork()方法,测试方法的正确性。
c . 直接安装服务,运行,通过日志来判断服务的运行状况。
比较喜欢的是b c 两种方法联合起来使用。
部分内容从摘抄自:
创建Windows服务与安装