在微軟技術棧中,衆所周知有一類項目是用於支持WindowService,而且目前只支持Windows系列的系統。而項目的建立、調試、安裝都相對新接觸的朋友而言仍是比較複雜。框架
在這裏介紹一種相對於簡單、明瞭的組件,同時能夠支持Linux守護(須要目標框架.Net Core 3.1以上的版本);ide
NewLife.Agent(支持.Net Framework4.0以上、.Net Core、.Net5.0),新生命團隊(大石頭)開發維護的組件,也但願你們能夠加入共同探討,QQ羣:1600800工具
使用工具:VS2019ui
NewLife.Agent項目引用版本8.7.2020.802spa
其中主要修改 Program Main方法調用 new Service().Main(args);調試
而Service主要方法在於 StartWork、StopWorkcode
class Program { static void Main(string[] args) => new Service().Main(args); } class Service : ServiceBase { public Service(){ ServiceName = "榮少-Leif Service ServiceName";//服務名 DisplayName = "榮少-Leif Service DisplayName";//顯示名 Description = "榮少-Leif Service Description";//描述 AddMenu('8', "調試", () => { XTrace.WriteLine($"調試啓動"); StartWork(string.Empty); }); } protected override void StartWork(string reason) { //任務啓動業務處理 for (int i = 0; i < 1000; i++) { XTrace.WriteLine($"{i}--{DateTime.Now}"); Thread.Sleep(1000); } base.StartWork(reason); } protected override void StopWork(string reason) { //任務中止業務處理 base.StopWork(reason); } }
在構造方法敲如下代碼便可,簡單的調試處理(因爲1-7基本都在組件上已經給佔用了,全部剩下的只有8-9能夠根據本身的想法處理,須要更多的自行重構便可)blog
AddMenu('8', "調試", () => { StartWork(string.Empty); });
修改文件中level="asInvoker"部分level="requireAdministrator"便可繼承
<!-- UAC 清單選項 若是想要更改 Windows 用戶賬戶控制級別,請使用 如下節點之一替換 requestedExecutionLevel 節點。n <requestedExecutionLevel level="asInvoker" uiAccess="false" /> <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> <requestedExecutionLevel level="highestAvailable" uiAccess="false" /> 指定 requestedExecutionLevel 元素將禁用文件和註冊表虛擬化。 若是你的應用程序須要此虛擬化來實現向後兼容性,則刪除此 元素。 --> <requestedExecutionLevel level="asInvoker" uiAccess="false" />
各位看了簡單的說明對比起來是否相對而言簡單些許,若是能幫到各位的話,請你們動動小手指點點推薦,謝謝你們了。ip