.Net平台下开发Windows服务的支持库很多,除了通过标准的Windows服务项目,还有一些优秀的开源架构比如:TopSelf;本文以常规项目为例
一、开发
1、新建【Windows服务】 项目:Practice.WinSvc.Normal;可以看到自动新建了一个服务类;点击打开设计界面;设计界面右键可以查看代码界面;
2、新建业务处理类OrderJob.cs
using System;
using System.Threading; namespace Practice.WinSvc.Normal
{
public sealed class OrderJob
{
private Boolean _IsStop = false;
private Thread _Thread;
public void Start()
{
_IsStop = false;
_Thread = new Thread(new ThreadStart(StartJob));
} private void StartJob()
{
while (!_IsStop)
{
//Do Some thing Thread.Sleep();
}
} public void Stop()
{
_IsStop = true; }
}
}
3、打开我们的服务PracticeWinSvcNormalService查看代码,修改:
namespace Practice.WinSvc.Normal
{
public partial class PracticeWinSvcNormalService : ServiceBase
{
public PracticeWinSvcNormalService()
{
InitializeComponent();
}
public OrderJob _orderjob = new OrderJob();
protected override void OnStart(string[] args)
{
_orderjob.Start();
} protected override void OnStop()
{
_orderjob.Stop();
}
}
}
4、添加安装程序,在服务设计界面上右键——添加安装程序,会自动添加一个ProjectInstaller里面包含了两个控件设置一些服务的属性 ;至此一个完整的服务开发完成
StartType设置手动、自动等等;ServiceName:设置服务的名称;
namespace Practice.WinSvc.Normal
{
[RunInstaller(true)]
public partial class ProjectInstaller : System.Configuration.Install.Installer
{
public ProjectInstaller()
{
InitializeComponent();
}
}
}
二、安装
1、方法:命令行
开发完成后编译Debug版本;安装要使用一个.Net Framework自带的工具InstallUtil.exe;使用.Net4.0的工具
输入命令:
InstallUtil.exe D:\Practice\Practice.WindowsSvc\bin\Debug\Practice.WindowsSvc.exe
卸载
InstallUtil.exe \u D:\Practice\Practice.WindowsSvc\bin\Debug\Practice.WindowsSvc.exe
也可以重新定义服务的名字
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe "MyServer.exe" -service /serviceName:"myServer-v1"
调试的时候附加到进程就可以了;
2、添加VS外部工具
这个看个人习惯,添加进去方便直接在vs就执行安装;免去命令行的麻烦;直接编译过项目,点击工具——我们设置的名称就可以安装;