用VS做一個windows服務其實很簡單。
下面是一個用VS2010做windows服務的簡單例子和一些注意事項。
1.新建一個windows服務
2.添加代碼
vs會自動生成一些代碼
在Service1.cs中會看到如下代碼
protected override void OnStart(string[] args)
{
}
protected override void OnStop()
{
}
其中OnStart為啟動服務時調用的方法;OnStop為停止服務時調用的方法。
每個服務都還有其他方法,比如暫停、恢復等,可以重載基類的方法來實現,如暫停:
protected override void OnPause()
{
base.OnPause();
}
自己的業務邏輯就可以在這些方法中調用實現。
ps:在做windows服務時常常是要弄一個循環還處理某些業務邏輯,常見的方法是用一個Timer控件,值得注意的是Toolbox中的Timer控件默認是System.Windows.Forms.Timer,顯然在這裡是不會起作用的,這裡可用System.Timers.Timer,可以直接在Toolbox中右鍵添加。
3.添加Installer
這一步很關鍵,在處理完業務邏輯後需添加一個Installer才能使你的windows服務能夠被安裝。
在VS中添加Installer也很簡單,操作如下:
右鍵Service1.cs
再到View Desiger視圖中右鍵
Installer就添加好了。
4.設置服務參數
可以在程序中先給定windows服務的參數
在添加Installer時會自動生成一個ProjectInstaller.cs,在這個文件中有個InitializeComponent方法,如下:
private void InitializeComponent()
{
this.serviceProcessInstaller1 = new System.ServiceProcess.ServiceProcessInstaller();
this.serviceInstaller1 = new System.ServiceProcess.ServiceInstaller();
//
// serviceProcessInstaller1
//
this.serviceProcessInstaller1.Password = null;
this.serviceProcessInstaller1.Username = null;
//
// serviceInstaller1
//
this.serviceInstaller1.ServiceName = "Service1";
//
// ProjectInstaller
//
this.Installers.AddRange(new System.Configuration.Install.Installer[] {
this.serviceProcessInstaller1,
this.serviceInstaller1});
}
this.serviceProcessInstaller1.Password = null;
this.serviceProcessInstaller1.Username = null;
為設置服務的登陸賬號密碼,如果不想設置用戶名密碼也可以采用本地系統帳戶運行服務,代碼如下:
this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalSystem;
其他設置也可在此完成。
5.安裝和卸載windows服務
制作完成的windows服務發布後為一個exe文件,要想到目標機器上安裝使用這個服務,可以用微軟提供的installutil工具,通過命令行的方式實現安裝和卸載。
installutil工具在目錄:系統盤:WINDOWSMicrosoft.NETFrameworkv4.0.30319下,運行cmd,輸入
C:WINDOWSMicrosoft.NETFrameworkv4.0.30319installutil xxxx.exe 回車,即可完成windows服務的安裝。
卸載則為輸入