topshelf注册服务
2024-09-02 06:56:20
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
最新文章
- c/c++字符串定义及使用的对比
- Visor 应用之一 通过ER 设计生成数据库脚本和实体对象
- MySQL的Explain命令
- 通过JS实现网站繁体简体互换
- GSON使用笔记(1) -- 序列化时排除字段的几种方式
- Sqoop_ 简单介绍
- 《算法问题实战策略》-chaper7-穷举法
- Html 小插件9 腾讯新闻
- UVa 二分图匹配 Biginners
- CuSparse 第一章
- (转)Spring3MVC 在JSP中使用@ModelAttribute
- ABP跨域调用API时出现的问题
- 小强的HTML5移动开发之路(13)——HTML5中的全局属性
- Java-ServletRequestEvent-ServletRequestAttributeEvent
- vue+原生JavaScript实现slideDown与slideUp[简单思路]
- pyhton崩溃的第六天,又有新成员
- python 第二百零八天 ----算法相关
- [翻译]一个新式的基于文本的浏览器 Browsh
- Mybatis的类型处理器
- xe7 c++builder 日期时间头文件函数大全 date
热门文章
- sikuli for循环例子
- 用eclipse开发Android,用Genymotion测试时报错adb发生错误
- Android Adapter中获得LayoutInflater
- Spring Cloud微服务安全实战_4-2_常见的微服务安全整体架构
- map、set 使用方法 | 1022 图书馆信息查询
- [LeetCode] 327. Count of Range Sum 区间和计数
- [LeetCode] 25. Reverse Nodes in k-Group 每k个一组翻转链表
- QLayout及其子类 清除添加的widget
- React Hooks 深入系列
- .NET Core:路由