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

最新文章

  1. c/c++字符串定义及使用的对比
  2. Visor 应用之一 通过ER 设计生成数据库脚本和实体对象
  3. MySQL的Explain命令
  4. 通过JS实现网站繁体简体互换
  5. GSON使用笔记(1) -- 序列化时排除字段的几种方式
  6. Sqoop_ 简单介绍
  7. 《算法问题实战策略》-chaper7-穷举法
  8. Html 小插件9 腾讯新闻
  9. UVa 二分图匹配 Biginners
  10. CuSparse 第一章
  11. (转)Spring3MVC 在JSP中使用@ModelAttribute
  12. ABP跨域调用API时出现的问题
  13. 小强的HTML5移动开发之路(13)——HTML5中的全局属性
  14. Java-ServletRequestEvent-ServletRequestAttributeEvent
  15. vue+原生JavaScript实现slideDown与slideUp[简单思路]
  16. pyhton崩溃的第六天,又有新成员
  17. python 第二百零八天 ----算法相关
  18. [翻译]一个新式的基于文本的浏览器 Browsh
  19. Mybatis的类型处理器
  20. xe7 c++builder 日期时间头文件函数大全 date

热门文章

  1. sikuli for循环例子
  2. 用eclipse开发Android,用Genymotion测试时报错adb发生错误
  3. Android Adapter中获得LayoutInflater
  4. Spring Cloud微服务安全实战_4-2_常见的微服务安全整体架构
  5. map、set 使用方法 | 1022 图书馆信息查询
  6. [LeetCode] 327. Count of Range Sum 区间和计数
  7. [LeetCode] 25. Reverse Nodes in k-Group 每k个一组翻转链表
  8. QLayout及其子类 清除添加的widget
  9. React Hooks 深入系列
  10. .NET Core:路由