C# 使用TopShelf实现Windows服务部署

摘要:
TownChier类是我们的服务实现类。当服务启动时,通过WhenStart调用相应的OnStart,停止时间相同。RunAsLocalSystem()表示作为本地系统帐户运行,包括网络服务和本地服务帐户。
一、TopShelf介绍

    topShelf是创建Windows服务的一种方式,可以方便管理应用服务,最大广泛应用于,数据实时接收,定时推送等。

二、TopShelf使用

    1、安装 TopShelf程序包

      C# 使用TopShelf实现Windows服务部署第1张

   2、编码 

 1 HostFactory.Run(x =>
 2             {
 3                 x.UseLog4Net();
 4                 x.Service<TownCrier>(s =>
 5                 {
 6                     s.ConstructUsing(name => new TownCrier());
 7                     s.WhenStarted(tc => tc.Start());
 8                     s.WhenStopped(tc => tc.Stop());
 9                 });
10                 x.RunAsLocalSystem();
11                 x.SetDescription("QuartzJob任务定时发送");
12                 x.SetDisplayName("QuartzJob");
13                 x.SetServiceName("QuartzJob");
14 
15                 x.EnablePauseAndContinue();
16             });

       其中Run方法的回调参数方法,在运行时执行,方法内是一些配置信息。

       其中TownCrier类是我们服务实现类,服务启动时通过WhenStarted调用对应实现的OnStart,停止一样。

       RunAsLocalSystem()表示以本地系统账号运行,可选的还有网络服务和本地服务账号。

       SetDescription("Topshelf测试例子"); 设置服务的描述

       SetDisplayName("TopshelfExample"); 设置服务的显示名称

       x.SetServiceName("TopshelfExample"); 设置服务的名称

      TownCrier服务类:

 1 public class TownCrier
 2     {
 3         readonly Timer _timer;
 4         public TownCrier()
 5         {
 6             _timer = new Timer(1000) { AutoReset = true };
 7             _timer.Elapsed += (sender, eventArgs) => Console.WriteLine("---------------------DateTime: {0} ------------------- ", DateTime.Now);
 8         }
 9         public void Start() { _timer.Start(); }
10         public void Stop() { _timer.Stop(); }
11     }

    3、安装

    使用管理员打开CMD窗口

    C# 使用TopShelf实现Windows服务部署第2张

     安装服务 server.exe install

     启动服务 server.exe start

     停止服务 server.exe stop

     卸载服务 server.exe uninstall

免责声明:文章转载自《C# 使用TopShelf实现Windows服务部署》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇pycharm添加pyqt工具单项目实现vendor分离编译,增加编译效率(vue-cli)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

spring5 源码深度解析----- AOP的使用及AOP自定义标签

接下来我们就详细分析下spring中的AOP。AOP的使用在开始前,先引入Aspect。那么,Spring是如何实现AOP的呢?首先我们知道,SPring是否支持注解的AOP是由一个配置文件控制的,也就是,当在配置文件中声明了这句配置的时候,Spring就会支持注解的AOP,那么我们的分析就从这句注解开始。AOP自定义标签之前讲过Spring中的自定义注解,...

iOS开发(Swift):创建UINavigationView的三种方法

,表示window值我们会赋值。然后创建一个根视图控制器rootViewController,一个导航控制器navigationController。)-˃Bool{//Overridepointforcustomizationafterapplicationlaunch.window=UIWindowwindow.makeKeyAndVisible()ro...

mysql状态查看 QPS/TPS/缓存命中率查看

showglobalstatusslike'Com_ commit';showstatslike“无缓冲池读取%”;Thread_cache_Hits=(1-Thread_created/connections)*100%(8)锁定状态mysql&gt;showstatslike“Binlog_缓存%”;...

WinForm 中 comboBox控件之数据绑定

作为列表类型,public class Info{public string Id{get;Name=“Li Si”};infoList.Add(info3);...

jquery跨域请求数据

Jquery跨域请求数据Jquery跨请求数据。事实上,这很容易。请遵循以下步骤:首先,编写js,通过get获取远程数据。请注意,回调参数应添加在链接之后,这意味着将回调函数地址传输到远程页面。',{params},函数cb{alert;alert;},'json');第二:编写处理程序。publicvoidProcessRequest{context.Re...

wxparse使用(富文本插件)

优点:唯一已知的可以将HTML转换为小程序识别的插件缺点:转换HTML标签可能需要大量的微信小程序标签和样式配置:步骤1,下载https://github.com/icindy/wxParse第二步:把它放到项目中。我选择页面目录。步骤3:配置wxml以添加:需要时使用:...