一个.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 系统服务利器相关推荐

  1. elasticsearch设置为windows系统服务

    目前我都是在windows的环境下操作是Elasticsearch,并且喜欢使用命令行   启动时通过cmd直接在elasticsearch的bin目录下执行elasticsearch   这样直接启 ...

  2. 将Tomcat加入windows系统服务

    将Tomcat加入windows系统服务 将Tomcat加入服务 1.修改bin目录中的service.bat: REM 添加下面的一行 set CATALINA_HOME=%cd% 如果从来没有安装 ...

  3. 怎样把任意exe程序注册成windows系统服务(手动注册服务)

    怎样把任意exe程序注册成windows系统服务(手动注册服务) 1. 要实现这个功能要用到微软提供的两个小工具"instsrv.exe"和"srvany.exe&quo ...

  4. 【Abp VNext】实战入门(四):Windows系统服务制作

    前言: 做开发经常会遇到守卫进程一类的需求,通过守卫进程去保证某个服务程序的正常执行和启动:这个时候针对Windows平台守卫进程,首选的肯定是Windows系统服务,先保证系统服务随系统启动而启动, ...

  5. WINDOWS系统服务详解

    1 WINDOWS系统服务详解    --  WINDOWS系统服务详解 <P>1 Alerter 当系统发生故障时向管理员发送错误警报,除非电脑处于局域网,而且配有网络管理员,一 般不需 ...

  6. 将frpc注册成windows系统服务

    将frpc注册成windows系统服务 将frpc注册成windows系统服务,让frpc随着系统启动而自动启动 环境:配置好的可以使用的frpc环境 .装好choco的windows(不会给wind ...

  7. 将elasticsearch设置为windows系统服务

    目前我都是在windows的环境下操作是Elasticsearch,并且喜欢使用命令行 启动时通过cmd直接在elasticsearch的bin目录下执行elasticsearch 这样直接启动的话集 ...

  8. 潇洒郎: Python exe程序注册为windows 系统服务

    1. 将python脚本生成exe文件 安装打包工具: pip install pyinstaller 生成exe文件: pyinstaller -F dial.py 如果想noconsole 则加参 ...

  9. Windows系统服务大全

    Windows系统服务大全 Alerter   微软: 通知选取的使用者及计算机系统管理警示.如果停止这个服务,使用系统管理警示的程序将不会收到通知.如果停用这个服务,所有依存于它的服务将无法启动.  ...

最新文章

  1. django 完整日志配置
  2. python是c语言_python与c语言
  3. 使用正则把数字前面的符号替换_正则表达式(一) 基本表达式
  4. 读《大道至简—是懒人造就了方法 》有感
  5. java动态删除map元素报错_java map使用迭代器遍历时执行删除元素报空指针异常
  6. python split()方法_聊聊 Python 的单元测试框架(一):unittest
  7. 微信小范围上线“分付”功能;罗永浩宣布独家签约抖音;Github pages 可能遭遇中间人攻击 | 极客头条...
  8. redis,memcache,mongodb对比
  9. 通过存储过程,插入300万条数据的一点思考?
  10. 基于隐式调用风格的kwic实现
  11. linux安装软件常用命令
  12. linux 最常用的指令- [readelf][objdump] 读取elf 文件系列
  13. android 11.0 去掉音量键电源键组合键的屏幕截图功能
  14. centos离线安装(升级)nvidia显卡驱动及cuda10.2
  15. 分享雷军二十年前写的代码,全部都是汇编,来看看雷军的编程水平吧。
  16. VLAN 主干道配置
  17. 实体机安装双系统多系统教程 及引导修复指南
  18. js基础--数据类型
  19. #入坑keychron#火爆的keychron机械键盘,你还没有入手?【重点:附键盘选购建议】
  20. 一首歌一个故事 -- 忘记你我做不到

热门文章

  1. 修改mac终端命令行的前缀
  2. 非线性表——哈夫曼树
  3. 使用lodop打印el-table表格无法显示内容,只显示表头的问题
  4. 快速使用UE4制作”大场景游戏“
  5. 如何使用Python在OpenCV中检测图像中的猫脸?
  6. EasyClick iOS脚本_免越狱_免硬件工程打包IPA使用说明
  7. 第4期|一周电商零售news汇总(2.1-2.7)李子柒刷新吉尼斯世界纪录:最多订阅量的油管中文频道...
  8. 通过经纬度查看地图位置的app
  9. 高电平输入好还是rca输入好_支持7.1声道天生为大系统而来 这样的DSP功放有多大的能耐?...
  10. 大数据从何学起?大数据脑图+学习路线清晰的告诉你!