標籤:des style blog http color os io 檔案
Windows服務應用程式是一種需要長期啟動並執行應用程式,它對於伺服器環境特別適合。它沒有使用者介面,並且也不會產生任何可視輸出。任何使用者訊息都會被 寫進Windows事件記錄。電腦啟動時,服務會自動開始運行。它們不要使用者一定登入才運行,它們能在包括這個系統內的任何使用者環境下運行。通過服務控 制管理器,Windows服務是可控的,可以終止、暫停及當需要時啟動。
1.建立一個Windows服務項目
2.系統自動建立了一個Service1.cs的檔案,雙擊開啟Service1.cs檔案,在工作區域右鍵-->屬性或者F4可以查看檔案屬性
Autolog 是否自動寫入系統的記錄檔
CanHandlePowerEvent 服務時候接受電源事件
CanPauseAndContinue 服務是否接受暫停或繼續啟動並執行請求
CanShutdown 服務是否在運行它的電腦關閉時收到通知,以便能夠調用 OnShutDown 過程
CanStop 服務是否接受停止啟動並執行請求
ServiceName 服務名稱
3.額,預設的Service1.cs檔案名稱字確實比較不討人喜歡,因此我們把檔案名稱字修改成TestService(注意是檔案名稱字而不是ServiceName,在上一步中,我已經定義ServiceName為TestService了,當然也可以是其他的)
4.Windows服務的主函數寫在Program檔案中,讓我們來看看它的代碼,發現如果我們定義了N多個服務,可以再這裡定義到底運行哪個服務。
/// <summary> /// 應用程式的主進入點。 /// </summary> static void Main() { ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new TestService() }; ServiceBase.Run(ServicesToRun); }
View Code
5.查看TestService的代碼,預設實現了OnStart和OnStop兩個方法,以向一個文本中寫入資料為例
public TestService() { InitializeComponent(); } /// <summary> /// 服務啟動了 /// </summary> protected override void OnStart(string[] args) { HGL.Toolkit.IOHelper.FileOperate.WriteFile(@"F:\1.txt", "服務啟動了\n"); } /// <summary> /// 服務停止了 /// </summary> protected override void OnStop() { HGL.Toolkit.IOHelper.FileOperate.WriteFile(@"F:\1.txt", "服務停止了\n"); } /// <summary> /// 系統關閉 /// </summary> protected override void OnShutdown() { HGL.Toolkit.IOHelper.FileOperate.WriteFile(@"F:\1.txt", "系統關閉\n"); } /// <summary> /// 服務暫停了 /// </summary> protected override void OnPause() { HGL.Toolkit.IOHelper.FileOperate.WriteFile(@"F:\1.txt", "服務暫停了\n"); } /// <summary> /// 服務繼續 /// </summary> protected override void OnContinue() { base.OnContinue(); } /// <summary> /// 系統電源狀態改變 /// </summary> protected override bool OnPowerEvent(PowerBroadcastStatus powerStatus) { return base.OnPowerEvent(powerStatus); }
View Code
6.安裝服務,切換到 Service1.cs[設計] 介面,右擊選擇“添加安裝程式”。
這時項目中就添加了一個新類 ProjectInstaller 和兩個安裝組件 ServiceProcessInstaller 和 ServiceInstaller。
選中“serviceInstaller1” 控制項,F4開啟屬性面板
Description 服務程式的描述資訊
DisplayName 服務程式顯示的名稱
StartType 指定如何啟動服務
Manual 服務安裝後,必須手動啟動
Automatic 每次電腦重新啟動時,服務都會自動啟動
Disabled 服務無法啟動
選中“serviceProcessInstaller1” 控制項,F4開啟屬性面板
將serviceProcessInstaller類的Account屬性改為 LocalSystem。這樣,不論是以哪個使用者登入的系統,服務總會啟動。
7.右擊項目選擇產生即可,Windows服務是不能通過F5進行啟動並執行