C#-TopShelf服务创建和运行

 
在之前的博客《C#-Windows服务创建和运行》 https://www.cnblogs.com/ywkcode/p/11569593.html中,windows服务创建和运行的步骤还是较多。
本文通过引入Topshelf快速搭建和安装Windows服务。
 
1.TopShelf简介
TopShelf是一个开源的Windows服务构建框架,使用TopShelf框架可简化服务的创建,开发人员只需创建一个简单的控制台应用程序,就可以安装windows服务,调试容易和安装简便是其最大的优势
 
2.TopShelf使用
(1)创建控制台
 
(2)引入TopShelf的Nuget包
 
(3)TopShelf配置
 
 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("It is {0} and all is well", DateTime.Now);
 8         }
 9         public void Start() { _timer.Start(); }
10         public void Stop() { _timer.Stop(); }
11     }
12     public class Program
13     {
14  
15  
16         public static void Main(string[] args)
17         {
18             //配置和运行宿主服务
19             HostFactory.Run(x =>                                 //1
20             {
21                
22                 x.Service<TownCrier>(s =>                        //2
23                 {
24                     //指定服务类型
25                     s.ConstructUsing(name => new TownCrier());     //3
26                     //当服务启动后执行
27                     s.WhenStarted(tc => tc.Start());              //4
28                     //当服务停止后执行
29                     s.WhenStopped(tc => tc.Stop());               //5
30                 });
31                 //服务通过本地系统账号裕兴
32                 x.RunAsLocalSystem();                            //6
33                 //服务信息描述
34                 x.SetDescription("Sample Topshelf Host");        //7
35                //服务显示名称
36                 x.SetDisplayName("MyTopShelfShowName");                       //8
37                 //服务名称
38                 x.SetServiceName("MyTopShelfName");                       //9
39             });
40         }
41     }

 

运行效果如下图所示:
 
3.配置运行
(1)找到文件生成目录bin文件夹下
 
 (2)安装:TopShelfConsole.exe install
 
在任务管理器中能查看到我们自定义的服务
 
(3)启动:TopShelfConsole.exe start
 
 
(4)卸载:TopShelfConsole.exe uninstall
 
4.配合Quartz实现定时任务
上述的服务类型“TownCrier”比较简单,无法满足实际生产需求。
配合Quartz控制任务的执行和调度,Quartz的简单入门: https://www.cnblogs.com/ywkcode/p/11110126.html
 
主要代码:
 1 using System;
 2 using System.Timers;
 3 using Topshelf;
 4  
 5 namespace TopShelfConsole
 6 {
 7     
 8  
 9  
10     public class MyWindowService
11     {
12         public void Start() { JobScheduler.Start(); }
13         public void Stop() { JobScheduler.Stop(); }
14     }
15     public class Program
16     {
17  
18  
19         public static void Main(string[] args)
20         {
21             //配置和运行宿主服务
22             HostFactory.Run(x =>                                 //1
23             {
24                
25                 x.Service<MyWindowService>(s =>                        //2
26                 {
27                     //指定服务类型
28                     s.ConstructUsing(name => new MyWindowService());     //3
29                     //当服务启动后执行
30                     s.WhenStarted(tc => tc.Start());              //4
31                     //当服务停止后执行
32                     s.WhenStopped(tc => tc.Stop());               //5
33                 });
34                 //服务通过本地系统账号裕兴
35                 x.RunAsLocalSystem();                            //6
36                 //服务信息描述
37                 x.SetDescription("Sample Topshelf Host");        //7
38                //服务显示名称
39                 x.SetDisplayName("MyTopShelfShowName");                       //8
40                 //服务名称
41                 x.SetServiceName("MyTopShelfName");                       //9
42             });
43         }
44     }
45 }

 

 
 
最终显示的结果:
 
附源码:
提取码:qbxk
 
参考链接:
 
以上仅用于学习和总结
 
posted @ 2020-07-05 11:38  y_w_k  阅读(3102)  评论(6编辑  收藏  举报