学然后知不足 教然后知困。
没做过windows service开发时,感觉很难,无从下手。再网看了些例子,加上自己的理解,写下开发步骤。
开发步骤
-
新建windows service
-
添加服务,发表后将再自己的电脑的 服务管理 查看到
partial class MyService : ServiceBase
{
Timer timer1;
public MyService()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
// TODO: Add code here to start your service.
using (StreamWriter sw = File.AppendText(@"D:\\\\log2.txt"))
{
sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " Start.");
}
timer1 = new Timer();
timer1.Interval = 2000;
timer1.Elapsed += (sender, e) =>
{
using (StreamWriter sw = File.AppendText(@"D:\\\\log2.txt"))
{
sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " Countue...");
}
};
timer1.Start();
}
protected override void OnStop()
{
// TODO: Add code here to perform any tear-down necessary to stop your service.
using (StreamWriter sw = File.AppendText(@"D:\\\\log2.txt"))
{
sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " Stop.");
}
}
}
- 添加服务安装程序(这是vs给提供的方便操作),可以发表多个服务。
右击,点击Add Installer
,自动生成类ProjectInstaller
。大家可以看下vs自动生成的类ProjectInstaller.Designer.cs
文件
private void InitializeComponent()
{
this.serviceProcessInstaller1 = new System.ServiceProcess.ServiceProcessInstaller();
this.serviceInstaller1 = new System.ServiceProcess.ServiceInstaller();
//设置服务安装信息
this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalService;
this.serviceProcessInstaller1.Password = null;
this.serviceProcessInstaller1.Username = null;
//要安装的服务(保证与你的服务名一致,可添加多个)
this.serviceInstaller1.ServiceName = "MyService";
//服务加入
this.Installers.AddRange(new System.Configuration.Install.Installer[] {
this.serviceProcessInstaller1,
this.serviceInstaller1});
}
注意将服务安装设置为:手动安装
4. 服务安装卸载脚本
Install.bat 文件:
%SystemRoot%\\Microsoft.NET\\Framework\\v4.0.30319\\InstallUtil.exe "%~dp0%WindowsServiceTest.exe"
pause
Uninstall.bat文件:
%SystemRoot%\\Microsoft.NET\\Framework\\v4.0.30319\\InstallUtil.exe -u "%~dp0%WindowsServiceTest.exe"
pause