1、建立windows服務windows
一、用VS建立windows服務,結果以下:設計模式
二、刪除默認生成的Service1.cs文件,而後建立本身的服務文件(如:MyService),並修改Program.cs文件的代碼,以下:ide
此時,解決方案的目錄結構以下:工具
三、雙擊MyService.cs服務文件,在左側設計模式中,右鍵,點擊「添加安裝程序」,自動會生成Projectinstaller.cs文件以及兩個安裝組件,以下:編碼
四、右鍵」ServiceProcessInstaller1「,選擇屬性,設置Account 賬號方式,建議爲LocalService,以下:spa
五、右鍵」ServiceInstaller1「,選擇屬性,設置屬性設計
a)Description 服務描述,直接顯示到Windows服務列表中的描述;3d
b)DisplayName 服務顯示名稱,直接顯示到Windows服務列表中的名稱;調試
c)ServiceName 服務進程名稱,安裝與卸載服務時的惟一標識.日誌
以下:
六、建立安裝服務批處理文件Install.bat,能夠建立記事本,而後修改後綴爲bat,記事本內容以下:
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe WindowsServiceDemo.exe
Net Start MyService
sc config MyService start= auto
pause
記事本另存爲時設置編碼爲ANSI,以下圖:
七、同理建立建立卸載服務批處理文件Uninstall.bat,內容以下:
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe /u WindowsServiceDemo.exe
pause
此時解決方案的目錄結構以下:
2、寫服務代碼
右鍵」MyService.cs「,選擇查看代碼,以下:
namespace WindowsServiceDemo { partial class MyService : ServiceBase { public MyService() { InitializeComponent(); } protected override void OnStart(string[] args) { // TODO: 在此處添加代碼以啓動服務。 } protected override void OnStop() { // TODO: 在此處添加代碼以執行中止服務所需的關閉操做。 } } }
下面實現本身的簡單功能,代碼以下:
using System; using System.Diagnostics; using System.IO; using System.ServiceProcess; using System.Timers; namespace WindowsServiceDemo { partial class MyService : ServiceBase { private Timer time = new Timer(); public MyService() { InitializeComponent(); } protected override void OnStart(string[] args) { WriteLog("服務啓動,時間:"+DateTime.Now.ToString("HH:mm:ss") + "\r\n"); time.Elapsed += new System.Timers.ElapsedEventHandler(MethodEvent); time.Interval = 2 * 1000;//時間間隔爲2秒鐘 time.Start(); } protected override void OnStop() { WriteLog("服務中止,時間:" + DateTime.Now.ToString("HH:mm:ss") + "\r\n"); } private void MethodEvent(object source, System.Timers.ElapsedEventArgs e) { time.Enabled = false; string result = string.Empty; string startTime = DateTime.Now.ToString("HH:mm:ss"); try { //......... result = "執行成功,時間爲:"+ startTime; } catch (Exception exp) { result = "失敗,緣由:" + exp.Message; } finally { WriteLog(result); time.Enabled = true; } } /// <summary> /// 日誌記錄 /// </summary> /// <param name="logInfo"></param> public void WriteLog(string logInfo) { try { string logDirectory = AppDomain.CurrentDomain.BaseDirectory + "\\Logs"; if (!Directory.Exists(logDirectory)) { Directory.CreateDirectory(logDirectory); } string filePath = logDirectory + "\\" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt"; File.AppendAllText(filePath, logInfo); } catch { } } } }
具體功能是2秒鐘執行一次,並記錄日誌。
3、安裝windows服務
從新生成整個解決方案,成功後,從項目所在文件夾賦值bin文件到某個自定義的文件夾,並將Install.bat和Uninstall.bat複製到bin下的Debug文件夾中。
以管理員身份運行Install.bat安裝服務,成功結果以下圖:
這是右鍵「個人電腦」,選擇「管理」,選擇「服務」,就能夠看到服務已安裝,以下圖:
同時,Debug文件夾裏有了Logs文件,Logs文件夾裏有txt文檔,內容以下:
能夠看到沒2秒鐘執行一次。
4、卸載windows服務
卸載服務,一樣以管理員身份運行Uninstall.bat便可。
5、調試windows服務
打斷點,在工具欄選「調試」下的「附加到進程」,附加本身的服務便可調試。