1.需要从nutget上获取toshelf配置
2.代码
using Common.Logging; using Quartz; using Quartz.Impl; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Topshelf; namespace quartzNetTest { class Program { public static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger(); static void Main(string[] args) { //sched.Start(); HostFactory.Run(x => { x.Service<RegisterHost>(s => { s.ConstructUsing(name => new RegisterHost()); s.WhenStarted(tc => tc.Start()); s.WhenStopped(tc => tc.Stop()); s.WhenPaused(tc => tc.Stop()); s.WhenContinued(tc => tc.Start()); }); x.RunAsLocalSystem(); // 服务使用NETWORK_SERVICE内置帐户运行。身份标识,有好几种方式,如:x.RunAs("username", "password"); x.RunAsPrompt(); x.RunAsNetworkService(); 等 x.SetDescription("测试服务"); //安装服务后,服务的描述 x.SetDisplayName("QuartzNetTest"); //显示名称 x.SetServiceName("QuartzNetTest"); //服务名称 }); } } public class RegisterHost { public static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger(); public readonly IScheduler Scheduler; public RegisterHost() { logger.Trace("------- 开始 ----------------------"); ISchedulerFactory schedulerFactory = new StdSchedulerFactory(); this.Scheduler = schedulerFactory.GetScheduler(); } public void Start() { Scheduler.Start(); logger.Trace("开始执行调度任务"); } public void Stop() { if (Scheduler != null) { logger.Trace("等待所有执行结束"); Scheduler.Shutdown(true); } logger.Trace("定时器结束工作"); } } }
没错,整个程序已经开发完了,接下来,只需要简单配置一下,即可以当服务来使用了。安装很方便:
安装:TopshelfDemo.exe install
启动:TopshelfDemo.exe start
卸载:TopshelfDemo.exe uninstall
下载demo: http://pan.baidu.com/s/1boFufSF