c# TopShelf windows 系统服务利器
一个.NET 自身的系统服务框架,可以方便的用控制台进行开发,命令启动
TopShelf是一个开源的跨平台的宿主服务框架,支持Windows和Mono,只需要几行代码就可以构建一个很方便使用的服务宿主。
vs 创建控制台项目 Nuget 引入
Install-Package Topshelf
实例代码
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Topshelf;namespace TopShelfDemo
{class Program{static void Main(string[] args){HostFactory.Run(x =>{x.Service<Test>(s =>{s.ConstructUsing(name => new Test());s.WhenStarted(tc => tc.Start());s.WhenStopped(tc => tc.Stop());});x.RunAsLocalSystem();x.SetDescription("任务描述信息");x.SetDisplayName("TestServer");x.SetServiceName("TestServer");x.OnException(ex =>{new Test().Ex(ex.Message);});});}}
}
/// <summary>/// 测试/// </summary>public class Test{public string LogPath { get { return Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "log.txt"); } }public void Start(){Task.Run(() =>{var times = 0;while (true){if (times > 1000){throw new Exception("运行次数超过1000");}File.AppendAllText(LogPath, $"{DateTime.Now.ToString()} 运行次数{times + 1} " + Environment.NewLine);times++;Thread.Sleep(1000);}});}public void Stop(){Task.Run(() =>{File.AppendAllText(LogPath, $"{DateTime.Now.ToString()} 服务停止! " + Environment.NewLine);});}public void Ex(string ex){Task.Run(() =>{File.AppendAllText(LogPath, $"{DateTime.Now.ToString()}: 服务异常:{ex} " + Environment.NewLine);});}}
以上是测试实例
服务启动命令
安装:TopShelfDemo.exe install
启动:TopShelfDemo.exe start
卸载:TopShelfDemo.exe uninstall
c# TopShelf windows 系统服务利器相关推荐
- elasticsearch设置为windows系统服务
目前我都是在windows的环境下操作是Elasticsearch,并且喜欢使用命令行 启动时通过cmd直接在elasticsearch的bin目录下执行elasticsearch 这样直接启 ...
- 将Tomcat加入windows系统服务
将Tomcat加入windows系统服务 将Tomcat加入服务 1.修改bin目录中的service.bat: REM 添加下面的一行 set CATALINA_HOME=%cd% 如果从来没有安装 ...
- 怎样把任意exe程序注册成windows系统服务(手动注册服务)
怎样把任意exe程序注册成windows系统服务(手动注册服务) 1. 要实现这个功能要用到微软提供的两个小工具"instsrv.exe"和"srvany.exe&quo ...
- 【Abp VNext】实战入门(四):Windows系统服务制作
前言: 做开发经常会遇到守卫进程一类的需求,通过守卫进程去保证某个服务程序的正常执行和启动:这个时候针对Windows平台守卫进程,首选的肯定是Windows系统服务,先保证系统服务随系统启动而启动, ...
- WINDOWS系统服务详解
1 WINDOWS系统服务详解 -- WINDOWS系统服务详解 <P>1 Alerter 当系统发生故障时向管理员发送错误警报,除非电脑处于局域网,而且配有网络管理员,一 般不需 ...
- 将frpc注册成windows系统服务
将frpc注册成windows系统服务 将frpc注册成windows系统服务,让frpc随着系统启动而自动启动 环境:配置好的可以使用的frpc环境 .装好choco的windows(不会给wind ...
- 将elasticsearch设置为windows系统服务
目前我都是在windows的环境下操作是Elasticsearch,并且喜欢使用命令行 启动时通过cmd直接在elasticsearch的bin目录下执行elasticsearch 这样直接启动的话集 ...
- 潇洒郎: Python exe程序注册为windows 系统服务
1. 将python脚本生成exe文件 安装打包工具: pip install pyinstaller 生成exe文件: pyinstaller -F dial.py 如果想noconsole 则加参 ...
- Windows系统服务大全
Windows系统服务大全 Alerter 微软: 通知选取的使用者及计算机系统管理警示.如果停止这个服务,使用系统管理警示的程序将不会收到通知.如果停用这个服务,所有依存于它的服务将无法启动. ...
最新文章
- django 完整日志配置
- python是c语言_python与c语言
- 使用正则把数字前面的符号替换_正则表达式(一) 基本表达式
- 读《大道至简—是懒人造就了方法 》有感
- java动态删除map元素报错_java map使用迭代器遍历时执行删除元素报空指针异常
- python split()方法_聊聊 Python 的单元测试框架(一):unittest
- 微信小范围上线“分付”功能;罗永浩宣布独家签约抖音;Github pages 可能遭遇中间人攻击 | 极客头条...
- redis,memcache,mongodb对比
- 通过存储过程,插入300万条数据的一点思考?
- 基于隐式调用风格的kwic实现
- linux安装软件常用命令
- linux 最常用的指令- [readelf][objdump] 读取elf 文件系列
- android 11.0 去掉音量键电源键组合键的屏幕截图功能
- centos离线安装(升级)nvidia显卡驱动及cuda10.2
- 分享雷军二十年前写的代码,全部都是汇编,来看看雷军的编程水平吧。
- VLAN 主干道配置
- 实体机安装双系统多系统教程 及引导修复指南
- js基础--数据类型
- #入坑keychron#火爆的keychron机械键盘,你还没有入手?【重点:附键盘选购建议】
- 一首歌一个故事 -- 忘记你我做不到
热门文章
- 修改mac终端命令行的前缀
- 非线性表——哈夫曼树
- 使用lodop打印el-table表格无法显示内容,只显示表头的问题
- 快速使用UE4制作”大场景游戏“
- 如何使用Python在OpenCV中检测图像中的猫脸?
- EasyClick iOS脚本_免越狱_免硬件工程打包IPA使用说明
- 第4期|一周电商零售news汇总(2.1-2.7)李子柒刷新吉尼斯世界纪录:最多订阅量的油管中文频道...
- 通过经纬度查看地图位置的app
- 高电平输入好还是rca输入好_支持7.1声道天生为大系统而来 这样的DSP功放有多大的能耐?...
- 大数据从何学起?大数据脑图+学习路线清晰的告诉你!