在很多應用中需要做windows服務來操作資料庫等操作,比如
(1)一些非常慢的資料庫操作,不想一次性去做,想慢慢的通過服務定時去做,比如定時為Database Backup等
(2)在.net Remoting中利用windows服務來做Host
利用vs.net我們可以在幾分鐘之內建立其windows服務,非常簡單
下面說一下步驟
1. 建立一個項目
2. 從一個可用的項目模板列表當中選擇Windows服務
3. 設計器會以設計模式開啟
4. 從工具箱的組件表當中拖動一個Timer對象到這個設計表面上 (注意: 要確保是從組件列表而不是從Windows表單列表當中使用Timer)
5. 設定Timer屬性,Interval屬性200毫秒
6. 然後為這個服務填加功能
7.雙擊這個Timer,然後在裡面寫一些操作的代碼,比如
代碼
string logFilePath = "d:\\service.txt";
string strMsg = "TEST";
using (FileStream fs = new FileStream(logFilePath, FileMode.Append, FileAccess.Write))
{
using (StreamWriter sw = new StreamWriter(fs, Encoding.Default))
{
sw.WriteLine(strMsg);
}
}
8. 將這個服務程式切換到設計檢視
9. 右擊設計檢視選擇“添加安裝程式”
10. 切換到剛被添加的ProjectInstaller的設計檢視
11. 設定serviceInstaller1組件的屬性:
1)Description:我的第一個Windows服務程式
2)DisplayName:MyWindowsTest
3) ServiceName :MyWindowsTest
4) StartType : Automatic (開機自動運行)
12. 設定serviceProcessInstaller1組件的屬性 Account = LocalSystem
這裡serviceProcessInstaller1 和 serviceInstaller1 有幾個重要屬性要設定,serviceInstaller1 中的StartType要設定成Automatic,表示隨機啟動,ServiceName表示服務名稱,Description 表示服務的描述, DisplayName 表示顯示名稱。serviceProcessInstaller1 中的Account要設定成LocalSystem,表示本地系統帳號
13. 改變路徑到你項目所在的bin\Debug檔案夾位置(如果你以Release模式編譯則在bin\Release檔案夾)
14. 執行命令“InstallUtil.exe MyWindowsService.exe”註冊這個服務,使它建立一個合適的註冊項。(InstallUtil這個程式在WINDOWS檔案夾\Microsoft.NET\Framework\v1.1.4322下面)
InstallUtil.exe /u 卸載服務
15. 右擊案頭上“我的電腦”,選擇“管理”就可以打電腦管理主控台
16. 在“服務和應用程式”裡面的“服務”部分裡,你可以發現你的Windows服務已經包含在服務列表當中了
17. 右擊你的服務選擇啟動就可以啟動你的服務了
需要注意的是:
如果你修改了這個服務,路徑沒有變化的話是不需要重新註冊服務的,如果路徑發生了變化,需要先卸載這個服務InstallUtil.exe /u參數,然後再重新安裝這個服務,不能直接安裝。還有就是windows服務是沒有介面的,不要企圖用控制的輸出方式來輸出一些資訊,你只能添加一個EventLog,通過WriteEntry()來寫日誌。