2013年7月9日 星期二

撰寫一個簡單的Windows Service

前言


有時候我們會再Server上撰寫一些簡單的小程式,
可能是會定時執行某些任務,但其實不需要任何的畫面顯示,
那我們可以選擇使用Windows Service的方式來運行這些程式,
現在就來介紹如何撰寫一個簡單的Windows Service

實際演練


首先,先建立一個Windows Service的Project
34
我們可以看到Project的結構長得像這樣
35
之後進入ServiceSample的Design Mode,並在上面點選滑鼠右鍵,選擇Properties
設定服務的名字及其他屬性
36
在ServiceSample.cs上點選滑鼠右鍵,選擇View Code,撰寫服務的程式碼內容
01public partial class ServiceSample : ServiceBase
02{
03    public ServiceSample()
04    {
05        InitializeComponent();
06    }
07 
08    protected override void OnStart(string[] args)
09    {
10        Logger.Write("MyServiceSample is Start!");
11    }
12 
13    protected override void OnStop()
14    {
15        Logger.Write("MyServiceSample is Stop!");
16    }       
17}



可以在這邊撰寫服務開始和結束時所要進行的動作,
除之此外還可以override OnPause及OnContinue來撰寫暫停和繼續所要執行的動作,
但要記得將CanPauseAndContinue屬性設為True才能執行暫停和繼續。
接下來再進入ServiceSample的Design Mode,點選滑鼠右鍵,選擇Add Installer
37
可看到畫面上出現serviceProcessInstaller1以及serviceInstaller1,
設定ServiceInstaller1屬性Name為MySampleService,StartType為Auto
設定ServiceProcessInstaller1屬性Account為Local System 本機帳號)
39 40
接下來要進行將程式安裝至Windows的服務之中,打開Visual Studio Tools的Visual Studio 2008 Command Prompt
輸入 installutil 程式所在目錄\WindowsServiceSample.exe,執行成功會看到畫面如下



41
之後打開控制台=>系統管理工具=>服務,可以看到服務已經被成功的安裝
42
接下來再點選滑鼠右鍵,選擇啟動,把正式的把服務運行起來
43
若要移除服務,一樣的只需要在Commad Prompt輸入
installutil /u 程式所在目錄\WindowsServiceSample.exe,成功畫面如下
44
即可解除安裝。

結語


使用Windows服務可以避免用戶不小心關閉程式而導致錯誤的發生,
也可以當作Daemon運行的一種選擇,依據使用上的需求而選擇囉!
如果有任何問題,歡迎大家多多指教 :)