Microsoft Windows 服務(即,之前的 NT 服務)使您可以建立在它們本身的 Windows 會話中可長時間運行的可執行應用程序。安全
服務能夠在計算機啓動時自動啓動,能夠暫停和從新啓動並且不顯示任何用戶界面。服務器
服務很是適合在服務器上使用,或任什麼時候候,爲了避免影響在同一臺計算機上工做的其餘用戶,須要長時間運行功能時使用。ide
還能夠在不一樣於登陸用戶的特定用戶賬戶或默認計算機賬戶的安全上下文中運行服務spa
一、VS新建一個Windows服務項目,命名MyWindowsService.net
二、修改Service1爲MyService,F7進入代碼頁面(點擊切換代碼視圖),編寫操做邏輯代碼線程
三、OnStart用於執行服務事件,通常採用線程方式執行方法,便於隔一段事件執行一回設計
using System; using System.IO; using System.ServiceProcess; using System.Threading.Tasks; namespace MyWindowsService { public partial class MyService : ServiceBase { public MyService() { InitializeComponent(); } //服務開啓 protected override void OnStart(string[] args) { Task.Factory.StartNew(Handle); } //服務關閉 protected override void OnStop() { } //須要定時執行的代碼段 private void Handle() { while (true) { try { var path = AppDomain.CurrentDomain.BaseDirectory + "service.log"; var context = "MyWindowsService: Service Stoped " + DateTime.Now + "\n"; WriteLogs(path, context); } catch (Exception) { throw; } } } public void WriteLogs(string path, string context) { var fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write); var sw = new StreamWriter(fs); sw.BaseStream.Seek(0, SeekOrigin.End); sw.WriteLine(context); sw.Flush(); sw.Close(); fs.Close(); } } }
服務不能直接運行,F5會出現3d
一、選中MyService.cs,右鍵-->查看設計器 ;在設計器中右鍵-->添加安裝程序調試
二、項目中添加了ProjectInstaller.cs文件,該文件中視圖自動會添加倆個組件serviceProcessInstaller1和serviceInstaller1日誌
三、選中serviceProcessInstaller1組件,查看屬性,設置account爲LocalSystem,這樣能保證不管是什麼用戶登陸都能執行。
四、選中serviceInstaller1組件,查看屬性設置以下
ServiceName:表示在系統服務中的名稱
StartType:Manual:手動啓動,默認中止,Automatic:自動啓動
Description:服務描述
安裝服務須要InstallUtil.exe,通常在電腦這個目錄找到C:\Windows\Microsoft.NET\Framework64\v4.0.30319
此處須要注意的是,在C:\Windows\Microsoft.NET\Framework目錄下有不少相似版本,具體去哪一個目錄要看項目的運行環境,例 若是是.net framework2.0則須要輸入 cd C:\Windows\Microsoft.NET\Framework\v2.0.50727
一、從新生成MyWindowsService項目
二、生成的bin目錄考到要安裝的目錄(服務文件已經在附件中):例如:拷貝到C:\(服務路徑根據實際狀況安裝,卸載)
三、窗口+R 打開cmd
cd C:\Windows\Microsoft.NET\Framework64\v4.0.30319
安裝服務: Installutil C:\bin\Debug\MyWindowsService.exe
卸載服務: Installutil /u C:\bin\Debug\MyWindowsService.exe
四、個人電腦-->右鍵管理-->服務和應用程序-->服務 找到咱們的服務
啓動服務後會一直執行Handle()方法寫日誌
首先確保服務已經安裝成功,而且處於已啓動
VS-->調試-->附加到進程 找到咱們服務名稱MyWindowsService肯定
而後斷點就進代碼了
若是出現MyWindowsService.exe沒法複製或者進程佔用的問題
打開進程管理器,關閉MyWindowsService.exe進程就能夠了。