一、创建window服务 1、新建项目-->选择Windows服务。默认生成文件包括Program.cs,Service1.cs 2、在XmlService.cs添加如下代码:
public partial class XmlService : ServiceBase { #region 属性定义 /// <summary> /// 定时器 /// </summary> Timer _Timer; #endregion public XmlService() { InitializeComponent(); } void _Timer_Elapsed(object sender, ElapsedEventArgs e) { CommonHelper ch = new CommonHelper(); string strxml = ch.GetXML(DBHelper.GetXmlUrl()); Loger.Info("时间:"+DateTime.Now+";"+strxml); EventLog.WriteEntry(strxml); } /// <summary> /// 启动服务,达到间隔时间 /// </summary> protected override void OnStart(string[] args) { Loger.Info("window服务已经启动!"+DateTime.Now); _Timer = new System.Timers.Timer(); _Timer.Interval = Convert.ToDouble(Common.DBHelper.GetTime()) * 1000; //设置计时器事件间隔执行时间 //_Timer.Interval = 3*60 * 1000; _Timer.Elapsed += new System.Timers.ElapsedEventHandler(_Timer_Elapsed); _Timer.AutoReset = true; _Timer.Enabled = true; } //停止服务 protected override void OnStop() { this._Timer.Enabled = false; Loger.Info("window服务已经停止!"); } }
二、添加window服务安装程序 1、打开Service1.cs【设计】页面,点击右键,选择【添加安装程序】,会出现serviceInstaller1和serviceProcessInstaller1两个组件 2、将serviceProcessInstaller1的Account属性设为【LocalSystem】, serviceInstaller1的StartType属性设为【Automatic】,ServiceName属性可设置服务名称,此后在【管理工具】--》【服务】中即显示此名称 3、ProjectInstaller.cs文件,在安装服务后一般还需手动启动(即使上述StartType属性设为【Automatic】),可在ProjectInstaller.cs添加如下代码实现安装后自动启动 public ProjectInstaller() { InitializeComponent(); this.Committed += new InstallEventHandler(ProjectInstaller_Committed); } private void ProjectInstaller_Committed(object sender, InstallEventArgs e) { //参数为服务的名字 System.ServiceProcess.ServiceController controller = new System.ServiceProcess.ServiceController("服务名称"); controller.Start(); } 三、安装、卸载window服务 1、输入cmd(命令行),输入cd C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319,2.0为cd C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 2、安装服务(项目生成的exe文件路径) InstallUtil "E:\WindowsService1\bin\Debug\WindowsService1.exe" 3、卸载服务 InstallUtil /u "E:\WindowsService1\bin\Debug\WindowsService1.exe" 四、查看window服务 控制面板-->管理工具-->服务,可在此手动启动,停止服务 五、调试window服务 1、通过【事件查看器】查看 2、直接在程序中调试(菜单-->调试-->附加进程-->服务名(这里的服务名是项目名称,不是ServiceName属性自定义的名称,所以建议自定义名称和项目名称保持一致,另外需勾选【显示所有用户的进程】才能看到服务名)-->附加 3. 在程序中打断点调试即可,另外调试服务时服务必须已启动(管理工具-->服务)