設計原則:萬物皆對象 背景:在我的項目中,即需要與硬體通過Socket連接通訊,又需要給App提供Wcf服務操作介面,雖然都完成了,但是卻是一個控制台(雖然我很喜歡控制台,因為它簡單易用),把它放到伺服器運行,總有一個黑乎乎的視窗,總感覺不雅(原諒我的強迫症)。於是各種百度谷歌如何創建運行WIndo ...
設計原則:萬物皆對象
背景:在我的項目中,即需要與硬體通過Socket連接通訊,又需要給App提供Wcf服務操作介面,雖然都完成了,但是卻是一個控制台(雖然我很喜歡控制台,因為它簡單易用),把它放到伺服器運行,總有一個黑乎乎的視窗,總感覺不雅(原諒我的強迫症)。於是各種百度谷歌如何創建運行WIndows服務程式,就像SqlServer數據那樣在後臺默默運行奉獻就可以了。
但是,很多都是那麼的麻煩,需要批處理什麼的,而我這個人向來喜歡簡潔,於是便設計了這麼個Windows服務輔助類,沒錯,就是0命令。
正文:
1、類庫源碼我就不放了,最後都放到GitHub上
2、使用方法:
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進行安裝服務:
沒錯,你可以看見服務已經成功運行了!!!,是不是很假單?
選擇2進行服務卸載:
總結:
通過對服務操作一系列的封裝,使將控制台程式變成服務程式非常的簡單,不需要任何的批處理命令,只需要簡單的幾行代碼即可,感覺很爽的請點贊!
老規矩,GitHub地址:
https://github.com/Coldairarrow/WindowsServiceDemo