C#封装服务
- 新建服务项目;
- 重构 OnStart 和 OnStop
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;
namespace WatchDogService
{
/// <summary>
/// 守护进程
/// </summary>
public partial class WatchDogService : ServiceBase
{
//日志实例
private static readonly log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
public WatchDogService()
{
InitializeComponent();
}
/// <summary>
/// 服务必须至少重写 OnStart 和 OnStop 才有用。
/// </summary>
/// <param name="args"></param>
protected override void OnStart(string[] args)
{
logger.Info("log4net start");
}
protected override void OnStop()
{
}
}
}
- 添加安装服务
- 问题处理:
安装后运行会出现启动失败:
- 当我们直接按F5或者其他方式直接运行项目时,会提示:"无法从命令行或调试程序启动服务。必须首先安装 Windows服务(使用installutil.exe),然后用ServerExplorer、Windows服务管理工具或 NETSTART命令启动它。
- 安装installutil.exe
1)确定平台版本:
前提注意:如果你设置的目标平台是x64,打开的目录会不一样,不然导致服务运行不起来。可以右击项目名,点击【属性】——>【生成】——>【目标平台】查看。
2)根据版本选择相应地址:
3)添加环境变量:
cmd输入这个命令【InstallUtil】,如果是下面这样的内容说明成功了。
4)重新生成解决方案。
- 安装服务
以管理员身份运行cmd命令,然后安装服务:
1)查看生成服务的路径
2)安装服务:
- 运行服务
打开服务管理器,找到要启动的服务,然后右击启动服务。
启动后可以看到日志也有了:
- 卸载服务,可以运行这个命令:
InstallUtil /u 项目启动执行文件全路径:InstallUtil /u D:\项目演示临时保存\MyDemoService\MyDemoService\bin\Debug\MyDemoService.exe
- 服务命令:
1、安装服务:InstallUtil 项目启动执行文件全路径
2、启动服务:net start 服务名
3、停止服务:net stop 服务名
4、卸载服务:InstallUtil /u 项目启动执行文件全路径