.NET開發Windows服務Step By Step

一、   服務簡介

Windows服務,也就是先前的NT服務,該項技術可以讓您建立長期執行的應用程序,服務沒有任何用戶界面,它可以在電腦開機時自動啟動,您不一定需要登錄您的電腦,但是它已經開始工作了!您可以通過服務控制管理員來啟動、停止、暫停、繼續您的服務。要開啟服務控制管理員請遵循以下步驟:點擊開始→設定→控制台→系統管理工具→服務。一個典型的服務的例子是:萬緯網發布服務,該服務提供網頁的鏈接和管理,見下圖:

了解了Windows服務的基本概念後我們開始制作自己的Windows服務,請跟我一步一步來!

二、   Step By Step

1.   使用Windows服務的范本來建立專案(該步驟會為您自動建立繼承自ServiceBase 的類別)

2.   OnStartOnStop函數撰寫程式碼(OnStartOnStop分別覆寫ServiceBaseOnStartOnStop函數,目的是定義服務啟動時和停止時需要執行的程式碼)

3.   為服務加入安裝元件

4.   編譯您的專案

5.   建立安裝專案來安裝您的服務

6.   存取服務控制管理員並啟動您的服務

 

 

使用范本建立專案

           打開VS.NET 2003,在起始頁上點擊新增專案或選擇檔案菜單→新增→專案來開啟新增專案對話框,

在專案類型欄內選擇Visual C#專案,在范本欄內選擇Windows服務,在名稱文本框中輸MyFirstService,點擊確定開啟專案,見下圖:

按下確定按鈕後.NET將自動為您創建一個繼承自ServiceBase的類,默認名稱為Service1,接下來設定Service1ServiceName屬性為MyFirstServiceAutoLog屬性為TrueServiceName代表服務在安裝後的名稱,AutoLog代表是否將服務的動作如安裝、啟動等寫如事件記錄檔,見下圖:

接下來在Service1.cs[設計]中雙擊鼠標可打開代碼編輯器,見下圖:

OnStartOnStop函數撰寫程式碼

回到Service1.cs[設計]界面,在工具箱中選取元件菜單,將EventLog控件拖到設計畫面上,見下圖:

回到代碼編輯器,在Service1的構造函數內輸入以下代碼:

if (!System.Diagnostics.EventLog.SourceExists("MyFirstSource"))

     {

System.Diagnostics.EventLog.CreateEventSource("MyFirstSource","MyFirstLog");

     }

this.eventLog1.Source = "MyFirstSource";

this.eventLog1.Log = "MyFirstLog";

該段代碼的目的是創建一個名為MyFirstLog的事件記錄檔,並將所有寫入事件記錄檔的事件的來源名稱設為MyFirstSource,見下圖:

接下來使用EventLog控件的功能來編寫OnStartOnStop的程式碼,實現在服務啟動和停止時將信息寫入事件記錄檔的功能:

/// <summary>

     /// 設定使服務能開始執行的事務。

     /// </summary>

     protected override void OnStart(string[] args)

     {

           // TODO: 在此加入啟動服務的程式碼。

           this.eventLog1.WriteEntry("In OnStart");

     }

     /// <summary>

     /// 停止這項服務。

     /// </summary>

     protected override void OnStop()

     {

           // TODO: 在此加入停止服務所需執行的終止程式碼。

           this.eventLog1.WriteEntry("In OnStop");

}

注意:this.eventLog1.WriteEntry("")實現將信息寫入事件記錄檔。見下圖:

為服務加入安裝元件

若要為服務加入安裝元件,請遵循一下步驟:

回到Service1.cs[設計]界面,按一下設計工具的背景 (Background) 來選取服務本身,而不是它的內容,在 [屬性] 視窗中,按一下屬性清單下方灰色區域的 [加入安裝程式] 連結,這時.NET將會為您加入一個名為ProjectInstaller的安裝元件,見下圖:

接下來選中serviceInstaller1控件,在 [屬性] 視窗中,將 ServiceName 屬性設為 MyFirstServiceStartType 屬性設定為 Automatic,見下圖:

接下來選中serviceProcessInstaller控件,在 [屬性] 視窗中,將 Account 屬性設定為 LocalSystem,見下圖:

編譯您的專案

[方案總管] 中,以滑鼠右鍵按一下您的專案,然後從快速鍵功能表中選取 [屬性]

專案的 [屬性頁] 對話方塊隨即出現。

在左窗格中,選取 [通用屬性] 資料夾中的 [一般] 索引標籤。

[啟始物件] 清單選擇MyFirstService.Service1按下 [確定]。 按 CTRL+SHIFT+B 以建置專案。 見下圖:

建立安裝專案來安裝您的服務

[檔案] 功能表上,指向 [加入專案],然後選擇 [新增專案]

[專案類型] 窗格中,選取 [安裝和部署專案] 資料夾。

[範本] 窗格中,選取 [安裝專案]。將專案命名為 MyFirstServiceSetup

接著就會將安裝專案加入方案。見下圖:

接下來,在 [方案總管] 中,以滑鼠右鍵按一下 MyFirstServiceSetup,指向 [加入],然後選擇 [專案輸出]。接著會出現 [加入專案輸出群組] 對話方塊。

[專案] 方塊中會選取 MyFirstService

從清單方塊中選取 [主要輸出],然後按一下 [確定]

接著就會將 MyFirstService的主要輸出專案項目加入至安裝專案中。見下圖:

[方案總管] 中,用滑鼠右鍵按一下安裝專案,指向 [檢視],然後選擇 [自訂動作]

接著會出現 [自訂動作] 編輯器。

[自訂動作] 編輯器中,用滑鼠右鍵按一下 [自訂動作] 節點,然後選擇 [加入自訂動作]

接著會出現 [選取專案中項目] 對話方塊。

連按兩下清單方塊中的 [應用程式資料夾] 來開啟它,選取 [主要輸出 MyFirstService (作用中)] 並按一下 [確定]

接著主要輸出就會加入至自訂動作的所有四個節點 — [安裝][認可][復原] [解除安裝]

[方案總管] 中的 [MyFirstServiceSetup] 專案上按一下滑鼠右鍵,並選擇 [建置] 見下圖:

接下來安裝服務,右鍵點擊MyFirstServiceSetup,選擇安裝,見下圖:

接下來會彈出安裝程序,一直點擊下一步既可完成安裝,見下圖:

存取服務控制管理員並啟動您的服務

在安裝完成之後,服務既出現在服務控制管理員中,注意:在第一次安裝時服務不會自動啟動,必         須重新啟動電腦它才會自動啟動,在這裡我們就手動啟動它吧,見下圖:

雙擊該服務,點擊啟動按鈕,見下圖:

啟動後點擊確定,在事件檢視器中可以查看我們的服務所寫下的信息,要開啟事件檢視器請遵循以下步驟:點擊開始→設定→控制台→系統管理工具→事件檢視器,見下圖:

雙擊某一個資訊可以查看其詳細,見下圖:

好了,到此我們的服務就創建完成了,可能篇幅有點長,不過還是挺簡單的!在了解了Windows服務後,您可以充分發揮您的想象力,用它來實現您的每一個奇思怪想!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值