C#編寫Windows 服務

      Microsoft Windows 服務(即,之前的 NT 服務)使您可以建立在它們本身的 Windows 會話中可長時間運行的可執行應用程序。這些服務能夠在計算機啓動時自動啓動,能夠暫停和從新啓動並且不顯示任何用戶界面。這使服務很是適合在服務器上使用,或任什麼時候候,爲了避免影響在同一臺計算機上工做的其餘用戶,須要長時間運行功能時使用。還能夠在不一樣於登陸用戶的特定用戶賬戶或默認計算機賬戶的安全上下文中運行服務。安全

     使用Microsoft Visual Studio2012能夠很方便的建立一個Windows服務,本例實現一個向D盤的txt文件裏,寫入系統時間的Windows服務。服務器

     新建一個Windows Services工程:ide

 

工程建立好以後,默認會有一個Services1.cs文件,刪掉此文件,從新添加一個新Item函數

右擊新添加的這個文件,選擇View code,能夠看到,有兩個函數 OnStart和OnStop,OnStart函數在啓動服務時執行,OnStop函數在中止服務時執行。spa

這兩個函數的代碼以下:code

 1 using System;
 2 using System.Collections.Generic;
 3 using System.ComponentModel;
 4 using System.Data;
 5 using System.Diagnostics;
 6 using System.Linq;
 7 using System.ServiceProcess;
 8 using System.Text;
 9 using System.Threading.Tasks;
10 using System.IO;
11 
12 namespace MyFirstWindowsService
13 {
14     partial class MyWindowsService : ServiceBase
15     {
16         public MyWindowsService()
17         {
18             InitializeComponent();
19         }
20 
21         protected override void OnStart(string[] args)
22         {
23             // TODO: Add code here to start your service.
24             FileStream fileStream = new FileStream(@"D:\MyWindowsService.txt", FileMode.OpenOrCreate, FileAccess.Write);
25 
26             StreamWriter streamWriter = new StreamWriter(fileStream);
27 
28             streamWriter.BaseStream.Seek(0, SeekOrigin.End);
29 
30             streamWriter.WriteLine("My service started" + DateTime.Now.ToString() + "\n");
31 
32             streamWriter.Flush();
33 
34             streamWriter.Close();
35 
36             fileStream.Close();
37         }
38 
39         protected override void OnStop()
40         {
41             // TODO: Add code here to perform any tear-down necessary to stop your service.
42             FileStream fileStream = new FileStream(@"D:\MyWindowsService.txt", FileMode.OpenOrCreate, FileAccess.Write);
43 
44             StreamWriter streamWriter = new StreamWriter(fileStream);
45 
46             streamWriter.BaseStream.Seek(0, SeekOrigin.End);
47 
48             streamWriter.WriteLine("My service stopped " + DateTime.Now.ToString() + "\n");
49 
50             streamWriter.Flush();
51 
52             streamWriter.Close();
53 
54             fileStream.Close();
55         }
56     }
57 }

以後須要新建一個安裝組件MyWindowsServiceProjectInstaller(右擊MyWindowsService.cs這個文件選擇view desiner,而後選擇Add Installer),須要將MyFirstWindowsServiceProcessInstaller的account屬性設置爲localservice.orm

 

編寫批處理文件:blog

 安裝服務批處理:string

1 %SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe C:\Users\gaoja1\Desktop\MyWindowsService\MyFirstWindowsService\bin\Debug\MyFirstWindowsService.exe
2 Net Start ServiceTest
3 sc config ServiceTest start= auto

卸載服務批處理:it

%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe /u C:\Users\gaoja1\Desktop\MyWindowsService\MyFirstWindowsService\bin\Debug\MyFirstWindowsService.exe

 

服務安裝好以後:

 

服務啓動以後能夠在D盤看到一個txt的文件,裏面記錄了服務的啓動時間.

相關文章
相關標籤/搜索