WINDOWS服務的安裝:
C#制作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 服務名稱,也可以刪除服務

浙公网安备 33010602011771号