服務程序在c#中的寫法
1.在VS.NET2003中新建一個WINDOWS服務程序的項目WinSrv_A。
2.更改SERVICE1.CS屬性SERVICENAME為你所要建立的服務名稱,在服務管理器->名稱中你可以看到你的服務名
3.按F7進入代碼窗口,里面有2個重載函數是你要在其中寫代碼:覆寫OnStart和OnStop方法。
4.回到設計窗口點右鍵選擇添加安裝程序生成serviceInstaller1 serviceProcessInstaller1兩個組件,把serviceInstaller1的屬性ServiceName改寫為你的服務名,并把啟動模式設置為AUTOMATIC,把serviceProcessInstaller1的屬性account改寫為LocalSystem
5.編譯鏈接生成服務程序。
6.用.net framework工具INSTALLUTIL安裝服務程序即可,在“Wsv_A.exe”文件所在目錄下,vs 2005命令行中輸入“InstallUtil.exe Wsv_A.exe”,然后在“服務”中啟動該服務,或者在“運行”中輸入“NET START Service1”
7.卸載服務時,首先在“服務”中停止服務,或者在命令行輸入“NET STOP Service1”停止服務,然后輸入在VS 2005命令行“InstallUtil.exe -u Wsv_A.exe”,卸載該服務。2. 從一個可用的項目模板列表當中選擇Windows服務
3. 設計器會以設計模式打開
4. 從工具箱的組件表當中拖動一個Timer對象到這個設計表面上 (注意: 要確保是從組件列表而不是從Windows窗體列表當中使用Timer)
5. 設置Timer屬性,Enabled屬性為False,Interval屬性30000毫秒
6. 切換到代碼視圖頁(按F7或在視圖菜單當中選擇代碼),然后為這個服務填加功能
Windows服務的構成
在你類后面所包含的代碼里,你會注意到你所創建的Windows服務擴充了System.ServiceProcess.Service類。所有以.NET方式建立的Windows服務必須擴充這個類。它會要求你的服務重載下面的方法,Visual Studio默認時包括了這些方法。
? Dispose – 清除任何受控和不受控資源(managed and unmanaged resources)
? OnStart – 控制服務啟動
? OnStop – 控制服務停止
安裝Windows服務
Windows服務不同于普通Windows應用程序。不可能簡簡單單地通過運行一個EXE就啟動Windows服務了。安裝一個Windows服務應該通過使用.NET Framework提供的InstallUtil.exe來完成,或者通過諸如一個Microsoft Installer (MSI)這樣的文件部署項目完成。
添加服務安裝程序
創建一個Windows服務,僅用InstallUtil程序去安裝這個服務是不夠的。你必須還要把一個服務安裝程序添加到你的Windows服務當中,這樣便于InstallUtil或是任何別的安裝程序知道應用你服務的是怎樣的配置設置。
用InstallUtil安裝Windows服務1. 將這個服務程序切換到設計視圖
2. 右擊設計視圖選擇“添加安裝程序”
3. 切換到剛被添加的ProjectInstaller的設計視圖
4. 設置serviceInstaller1組件的屬性:
1) ServiceName = My Sample Service
2) StartType = Automatic
5. 設置serviceProcessInstaller1組件的屬性
1) Account = LocalSystem
6. 生成解決方案
現在這個服務已經生成,你需要把它安裝好才能使用。下面操作會指導你安裝你的新服務。
1. 打開Visual Studio .NET命令提示
2. 改變路徑到你項目所在的bin\Debug文件夾位置(如果你以Release模式編譯則在bin\Release文件夾)
3. 執行命令“InstallUtil.exe MyWindowsService.exe”注冊這個服務,使它建立一個合適的注冊項。
注意:直接運行 InstallUtil.exe 可能會失敗,提示:
'InstallUtil.exe' 不是內部或外部命令,也不是可運行的程序或批處理文件。
您可以在 C:\WINNT\Microsoft.NET\Framework\v1.1.4322 找到這個可執行程序
4. 右擊桌面上“我的電腦”,選擇“管理”就可以打計算機管理控制臺
5. 在“服務和應用程序”里面的“服務”部分里,你可以發現你的Windows服務已經包含在服務列表當中了
6. 右擊你的服務選擇啟動就可以啟動你的服務了
在每次需要修改Windows服務時,這就會要求你卸載和重新安裝這個服務。不過要注意在卸載這個服務前,最好確保服務管理控制臺已經關閉,這會是一個很好的習慣。如果沒有這樣操作的話,你可能在卸載和重安裝Windows服務時會遇到麻煩。僅卸載服務的話,可以執行相的InstallUtil命令用于注銷服務,不過要在后面加一個/u命令開關。
調試Windows服務
從另外的角度度看,調試Windows服務絕不同于一個普通的應用程序。調試Windows服務要求的步驟更多。服務不能象你對普通應用程序做的那樣,只要簡單地在開發環境下執行就可以調試了。服務必須首先被安裝和啟動,這一點在前面部分我們已經做到了。為了便于跟蹤調試代碼,一旦服務被啟動,你就要用Visual Studio把運行的進程附加進來(attach)。記住,對你的Windows服務做的任何修改都要對這個服務進行卸載和重安裝。
附加正在運行的Windows服務
為了調試程序,有些附加Windows服務的操作說明。這些操作假定你已經安裝了這個Windows服務并且它正在運行。
1. 用Visual Studio裝載這個項目
2. 點擊“調試”菜單
3. 點擊“進程”菜單
4. 確保 顯示系統進程 被選
5. 在 可用進程 列表中,把進程定位于你的可執行文件名稱上點擊選中它
6. 點擊 附加 按鈕
7. 點擊 確定
8. 點擊 關閉
9. 在timer1_Elapsed方法里設置一個斷點,然后等它執行
讓windows service 運行中出現錯誤時不停止的方法
private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { timer1.Enabled = false;
try {// 在這里對數據庫進行操作
timer1.Interval = 1 * 1000;
}
catch (SqlException sqlException)
{ timer1.Interval = 5 * 60 * 1000; }
finally
{ timer1.Enabled = true; } }
浙公網安備 33010602011771號