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
 
參考鏈接:
 
以上僅用於學習和總結
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM