設計原則:萬物皆對象git
背景:在個人項目中,即須要與硬件經過Socket鏈接通信,又須要給App提供Wcf服務操做接口,雖然都完成了,可是倒是一個控制檯(雖然我很喜歡控制檯,由於它簡單易用),把它放到服務器運行,總有一個黑乎乎的窗口,總感受不雅(原諒個人強迫症)。因而各類百度谷歌如何建立運行WIndows服務程序,就像SqlServer數據那樣在後臺默默運行奉獻就能夠了。github
可是,不少都是那麼的麻煩,須要批處理什麼的,而我這我的向來喜歡簡潔,因而便設計了這麼個Windows服務輔助類,沒錯,就是0命令。服務器
正文:函數
一、類庫源碼我就不放了,最後都放到GitHub上spa
二、使用方法:設計
using Coldairarrow.Util.WindowsService; using System; namespace WindowsServiceTest { class Program { public static void Main(string[] argc) { //建立服務容器,第一個參數爲指定服務名,第二個參數爲主函數入口的參數argc WindowsServiceContainer serviceContainer = new WindowsServiceContainer("A_Test_Service", argc); //服務啓動時執行的事件,便可以看作控制檯的主函數Main便可 serviceContainer.HandleOnStart = new Action<string[]>(args => { //能夠在這裏添加你須要服務乾的事情,好比建立Socket通信,Wcf服務,balabala......... //讓它在後臺默默地工做把~~~~~~~~~~ }); //處理日誌的事件 serviceContainer.HandleLog = new Action<string>(log => { Console.WriteLine(log); }); //處理異常的事件 serviceContainer.HandleException = new Action<Exception>(ex => { Console.WriteLine(ex.Message); }); //開始運行服務 serviceContainer.Start(); } } }
直接運行控制檯便可:日誌
選擇1進行安裝服務:code
沒錯,你能夠看見服務已經成功運行了!!!,是否是很假單?對象
選擇2進行服務卸載:blog
總結:
經過對服務操做一系列的封裝,使將控制檯程序變成服務程序很是的簡單,不須要任何的批處理命令,只須要簡單的幾行代碼便可,感受很爽的請點贊!
老規矩,GitHub地址: