结合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文件,属性-》兼容性-》勾选以管理员身份运行即可