WINDOWS服務的安裝:

C#制作Windows服務及安裝Windows服務

   WINDOWS服務的制作:

1. 新建一個Winform程式,如(WAPP),將默認的Form1.cs文件刪除.

2. 添加一個Windows服務類型的文件TestService.cs.

3. 查看該文件的程式碼可以看到TestService繼承自ServiceBase類且有兩個方法OnStart和OnStop, 這兩個方法分別表示在啟用服務與停止服務時執行的方法,當然也可以添加一些重載方法如OnPause(暫停),OnContinue(繼續)等.

4. ServiceBase類是Windows服務的基類,使用C#寫的Windows服務類都必須繼承自這個類.

5. 如我希望這個服務啟用後,每隔1小時執行一次指定的程式.只需在TestService.cs中添加如下代碼.

System.Timers.Timer _timer = new System.Timers.Timer();
protected override void OnStart(string[] args)
{
    _timer.Elapsed += new System.Timers.ElapsedEventHandler(_timer_Elapsed);
    _timer.Interval = 1000 * 3600;
    _timer.Enabled = true;
}
void _timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
    _timer.Enabled = false;
    // 這里執行定時程式
    _timer.Enabled = true;
}
protected override void OnStop()
{
    _timer.Enabled = false;
}

6. 這個時候服務的主體已經做好了,接下來是我們需要指定這個Windows服務的入口,如winform程式的入口是在
Program.cs中加入一個名為Main的靜態方法,在其下使用Application.Run來啟用程式.

[STAThread]
static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new Form1());
}

7. 其實Windows服務的入口跟Winform的入口差不多,只是不是使用Application.Run來啟用,而是使用ServiceBase.Run來啟用,如

[STAThread]
static void Main()
{
    ServiceBase[] ServicesToRun = new ServiceBase[] { new TestService() };
    ServiceBase.Run(ServicesToRun);
}

8. 註ServiceBase.Run的參數是個ServiceBase實體的數組,表示可以同時啟用多個服務.

9. 到這里怎個服務就已經完成了,那麼要在window平臺上使用這個服務就必須要安裝了.

 

WINDOWS服務的安裝:

1. 在TestService.cs文件的設計視圖中,右擊點擊添加安裝程式,這時候會產生一個ProjectInstaller.cs文件,在上面可以看到有兩個控件:serviceProcessInstaller1 和 serviceInstaller1.

2. serviceProcessInstaller類表示安裝一個可執行文件(即一個專案),這個類由vs的dos命令InstallUtil來調用.我們可以設定他的屬性Account來表示該服務使用什么帳號運行,這里我們設置為LocalSystem(本機服務)

3. serviceInstaller類表示安裝一個服務,針對一個可執行文件(即一個專案)只有一個serviceProcessInstaller,而可以有多個serviceInstaller.

4. serviceInstaller的屬性設置, Description:即服務說明,DisplayName:服務的顯示名稱,Parent:即對應的serviceProcessInstaller的實類,ServiceName:服務的類名稱.

5. 建置專案.

6. 在vs.net的命令行下面執行:InstallUtil  WApp.exe的全稱 ; 即可以將服務TestService安裝你的電腦上.

 

WINDOWS服務移除:
1. 在vs.net的命令行下面執行:InstallUtil   WApp.exe的全稱 -u ; 即可以將服務從電腦上移除.

2. 在cmd下執行sc delete 服務名稱,也可以刪除服務

posted @ 2014-02-26 14:13  玢棂  阅读(141)  评论(0)    收藏  举报