Topshelf便捷创建Windows服务
结合Quartz.net学习,前提已经创建了一个定时任务,可见 《定时调度框架:Quartz.net》 (基于配置文件形式)
首先引用Topshelf.dll
自定义服务TestService,继承ServiceControl,实现方法。
public class TestService : ServiceControl { private readonly IScheduler scheduler; public TestService() { scheduler = StdSchedulerFactory.GetDefaultScheduler(); //创建一个作业调度 } public bool Start(HostControl hostControl) { scheduler.Start(); return true; } public bool Stop(HostControl hostControl) { scheduler.Shutdown(); return true; } public bool Continue(HostControl hostControl) { scheduler.ResumeAll(); return true; } public bool Pause(HostControl hostControl) { scheduler.PauseAll(); return true; }
在Main中输入:
static void Main(string[] args) { HostFactory.Run(x => { x.Service<TestService>(); x.SetDescription("QuartzDemo服务描述"); x.SetDisplayName("QuartzDemo服务显示名称"); x.SetServiceName("QuartzDemo服务名称"); }); }
可以安装服务(程序所在目录下cmd执行),或可以用记事本输入改为bat格式,放在程序目录,双击执行
- 安装:TopshelfDemo.exe install
- 启动:TopshelfDemo.exe start
- 卸载:TopshelfDemo.exe uninstall
若在安装过程中,报“ service can only be installed as an administrator”
找到**.exe文件,属性-》兼容性-》勾选以管理员身份运行即可