曾在VS2008下用C#編寫過WindowsService監控進銷存庫存並且根據相關邏輯傳送簡訊。現在.NET4.0、VS2010中使用C#編寫Windows Service 監控指定目錄檔案。
具體步驟如下:
一、建立WindowsSerivce 工程
建立 Visual C# windows 目錄下的 Windows Service 工程:"HelloWindowsService"。添加一個 App.config(設定檔,如:指定監控磁碟目錄),一個ErrorLog.txt檔案(記錄服務作業記錄)。如下:
註:為了方便調用App.config 設定檔內容,在工程內需要引入System.Configuration.dll 。
二、為WindowsSerivce編寫監控目錄核心代碼
代碼如下:
RecordErrorLog 函數記錄了WindowsService 的具體監控內容。OnFileCreated 則是監控目錄,如果有新檔案建立則觸發的事件。這裡使用FileSystemWatcher類。
WindowsService 調用代碼:
三、為WindowsSerivce添加Installer
在第二步中,已經完成為目錄監控事件寫入了簡單的監控代碼。此時還需要為Service添加Installer。Installer內需要設定Service名稱、WindowsService說明等資訊。具體的步驟可以在VS2010可視化介面內完成。步驟如下:
1.開啟Service1設計介面點擊滑鼠右鍵
2.選擇 Add Installer 欄目
3.設定相關屬性
如下:
四、打包WindowsService
這裡使用Visual Studio Installer 打包 HelloWindowsService 服務。在解決方案內建立一個Visual Studio Installer工程。接著右鍵該工程選擇 添加 ---> Project Output。 如下:
點擊確定:
接著還要為WindowsService添加安裝和卸載功能。右鍵該專案檔(HelloWindowsServiceSetup工程)選擇View後點擊Custom Actions:
右鍵Install後選擇 Add Custom Action,不做任何設定點擊兩次確定,對UnInstall進行同樣的操作。如下:
以上步驟完成後還需要在安裝工程內添加一個已存在的檔案,該檔案就是HelloWindowsService內的日誌記錄檔案“ErrorLog.txt”。
至此,已經為HelloWindowsService添加了安裝和卸載功能。
五、小結
完成以上步驟後還需要將 ProjectInstaller的serviceProcessInstaller1的Account 屬性設定成 LocalSystem。這樣每次安裝服務就不需要輸入Windows 帳號和密碼。另外如果需要服務安裝成功後自動啟動,還需要修改ProjectInstaller.cs。為其添加AfterInstall事件,在該事件內添加啟動服務代碼。這樣服務安裝完成後就能夠自啟動了。
.NET下編寫WindowsService很方便也很簡單。如果您也感興趣.NET下編寫WindowsService那就趕緊嘗試一下吧。