[C#.NET][VB.NET] 如何建立 Windows 服務 Service 專案
Service是在Windows背景執行的組件(Assembly),不需要任何與使用者互動的操作介面,記得之前在VB6時代也有寫過Service,那時是用NTSVC.ocx,而現在.NET Framework 也提供了相關的類別,功能更是強大,可以讓人省去不少開發的時間。
1.建立一個服務專案
2.在設計畫面連點兩下後,就會看到OnStart與OnStop兩個可覆寫的方法,我們可以在OnStart與OnStop程序中撰寫程式碼。
3.修改Service Name,每一台電腦上都只會有唯一的名稱。
4.在OnStart加入程式碼,OnStart並不是真的會執行監看動作,它不能一直執行迴圈,如要製作簡易的輪詢機制我們可以用System.Timers.Timer類別來建立;應該也可以用委派或執行緒來建立,改天有時間應該可以來測測看。
5.使用ServiceInstaller、ServiceProcessInstaller控件來安裝Service,在設計畫面上按右鍵→加入安裝程式,不用自己再寫程式,VS真的是好用工具。
6.在ServiceInstaller控件的StartType設定要啟動的類別,一般會使用Service開發專案,應該是要讓電腦一開機未登入使用者就執行,所以要設為自動Automatic;再來設定Description、DisplayName,觀察一下Windows的Service就可以知道這兩個屬性是在做啥用的。
7.將ServiceProcessInstaller元件Account屬性的設定,如果你像我一樣懶,就可以將它設定為本機系統(LocalSystem),但它還是有一定的風險存在,要使用前得先評估一下自己的環境,因為我只是要測試,所以選一個最方便的來用。
上述兩大類別可以上MSDN找尋更多的屬性即方法ServiceProcessInstaller 類別,ServiceInstaller 類別。
8.專案按右鍵→屬性。
9.建置專案
專案建置好之後便可使用InstallUtil工具手動安裝服務或是建立一個安裝精靈介面來佈署,10、11選一個來佈署就可以了。
10.手動建立服務,在命令列輸入InstallUtil MyService.exe。手動解除服務,則為InstallUtil /u MyService.exe
開始→Microsoft Visual Studio 2005→Visual Studio 2005 Itanium Cross Tools 命令提示字元→將路徑切換到你的應用程式所在的路徑→輸入InstallUtil MyService.exe
我是將程式擺在C:下,應不會有人來問怎麼切換路徑吧
以下為安裝成功畫面
以下為解除成功畫面
11.建立安裝精靈
11-1.加入一個安裝專案
11-2.在安裝專案中按右鍵→加入→專案輸出→主要輸出→確定
11-3.安裝專案右鍵→檢視→自定動作
11-4.在自定動作中按右鍵→加入自訂動作→選應用程式資料夾→選主要輸出從myService(作用中)
11-5.建置安裝專案,在Release資料夾就可以看到兩個安裝檔,執行它們其中一個就行了。
步驟寫了還真多,不知道有沒有人看不懂的
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET