refer: http://blog.csdn.net/march1111/archive/2006/08/31/1151648.aspx
近段時間在做C#的項目,使用到了Windows Service.項目包括一個Windows Service工程,一個具體的業務處理工程(dll)
以及一個安裝工程.現就這幾天的使用心得做一下說明.
1.Windows Service程序與一般程序的區別。
Windows Service程序不能等同於一般的程序,直接調試或者運行是不起作用的。
2.Windows Service程序的安裝,卸載和啓動。
要想運行一個Windows Service程序,首先必須將這個服務程序安裝到Windows服務中去。如何安裝,卸載和啓動Windows Service程序呢?最常用的有2種方式。
方式一就是使用framwork自帶的InstallUtil命令以及net start命令。
1) 安裝Service: InstallUtil testService.exe
2) 卸載Service: InstallUtil /u testService.exe
3) 啓動Service: net start "服務名稱"(當然最簡單的就是手動啓動了^_^)
方式二就是做一個安裝工程。
方式二的最大好處就是通過相關設定,安裝完服務後立馬註冊Windows Service程序到Windows服務中去,下面我們就
詳細說明一下,如何實現這種處理方式。
1) 爲你的Windows Service工程(假設爲:testService)添加一個安裝工程(假設爲:testServiceSetup)。
2) 右鍵點擊創建的安裝工程(testServiceSetup)選擇"追加"-->"項目輸出",在"添加項目輸出組"對話框中選擇"主輸出",
在"項目"下拉框中選擇需要主輸出的服務程序即testService。
3) 右鍵點擊創建的安裝工程(testServiceSetup)選擇"視圖"-->"自定義操作",右鍵點擊"自定義操作"添加"自定義操作",
選擇應用程序文件夾中的主輸出程序testService,此時在以下4個節點(安裝,提交,回滾,卸載)中都添加了主輸出程序testService。
4) 編譯安裝。
安裝完畢後你創建的服務已經添加到Windows服務中去了。
3.Windows Service調試。
啓動Visual Studio,打開你的testService project.選擇菜單"調試->進程"。在進程窗口裏附加你的服務程序testService.exe。如果你看不到你的
testService.exe,請選中"顯示所有會話中的進程".這樣你才能看到以system賬號運行的Service. 如果你已經設置了斷點,當Serice運行到你設置的
斷點時,程序就會停下來等待你的調試。(說明:只有Debug模式下編譯的testService.exe纔可以進行調試)
4.Onstart()的調試。
1) 在方法Onstare()裏設置System.Timers.Timer,然後用Timer來延遲啓動服務。延遲的時間由你進入調試狀態的時間來決定。可以設置爲5秒。
當然服務啓動後應停止Timer(設置Timer.Enable=false).
2) 參見前一篇blog(Debugging the OnStart Method)。