1.打開VS程序,創建一個項目選擇 Windows 服務,默認有一人 Service1.cs 類,在這裏改名爲 IndexService.cs 代碼如下.
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;
using System.Text;
using System.IO;
namespace FileIndexService
{
public partial class IndexService : ServiceBase
{
public IndexService()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
// TODO: 在此處添加代碼以啓動服務。
using (StreamWriter sws = new StreamWriter(@"D:Selfinservice.txt"))
{
sws.Write("服務測試開始");
sws.Flush();
sws.Close();
}
}
protected override void OnStop()
{
// TODO: 在此處添加代碼以執行停止服務所需的關閉操作。
using (StreamWriter sws = new StreamWriter(@"D:Selfinservice.txt"))
{
sws.Write("服務測試結束");
sws.Flush();
sws.Close();
}
}
}
}
這裏只是簡單的讀寫文件操作.要處理的邏輯大家可以根據自己的需求來寫代碼.
2.創建一個ProjectInstall.cs類,要繼承 Installer 類.代碼如下:其中using System.Configuration.Install;句在System.Configuration.Install裏,需要手動添加引用.
using System.Collections.Generic;
using System.Text;
using System.Collections;
using System.ServiceProcess;
using System.ComponentModel;
using System.Configuration.Install;
namespace FileIndexService
{
[RunInstaller(true)]
public class ProjectInstall:Installer
{
private ServiceInstaller serviceInstaller;
private ServiceProcessInstaller processInstaller;
public ProjectInstall()
{
processInstaller = new ServiceProcessInstaller();
serviceInstaller = new ServiceInstaller();
processInstaller.Account = ServiceAccount.LocalSystem; //這樣,不論哪個用戶登錄的系統,服務總會啓動
//Automatic 每次計算機重新啓動時,服務都會自動啓動
//Manual 服務安裝後,必須手動啓動
//Disabled 服務無法啓動
serviceInstaller.StartType = ServiceStartMode.Automatic;
serviceInstaller.ServiceName = "FileIndexService"; //設置服務的名稱
Installers.Add(serviceInstaller);
Installers.Add(processInstaller);
}
}
}
如果不增加ProjectInstall.cs,則會報如下錯誤
沒有 RunInstallerAttribute 的公共安裝程序。在 f:/Self/TestCpuDemo/FileIndexService/bin/Debug/IndexService.exe 程序集中可能可以找到“Yes”屬性。
大家可以先不添加試試看.
以下是摘自網絡:
其中各屬性的含意是:
ü Autolog 是否自動寫入系統的日誌文件
ü CanHandlePowerEvent 服務時候接受電源事件
ü CanPauseAndContinue 服務是否接受暫停或繼續運行的請求
ü CanShutdown 服務是否在運行它的計算機關閉時收到通知,以便能夠調用 OnShutDown 過程
ü CanStop 服務是否接受停止運行的請求
ü ServiceName 服務名
安裝服務:
installutil FileIndexService.exe
卸載服務:
installutil /u FileIndexService.exe