什么是Windows服務?
Windows服務,是在Windows操作系統下能夠長時間運行的可執行應用程序。
它們在計算機啟動后用戶登錄前就執行,啟動方式分自動和手動,可以重啟或者暫停,且沒有任何用戶界面。
Windows服務典型的應用是緩存、異步支付訂單...
C#如何創建Windows服務?
利用Windows服務模板
新建項目
單擊右鍵,選擇添加安裝程序
添加成功后效果如下

分別配置serviceInstaller1、serviceProcessInstaller1的屬性


編寫服務主體邏輯代碼,比如在文本文件中寫入一句話
1 using System; 2 using System.IO; 3 using System.ServiceProcess; 4 using System.Configuration; 5 6 namespace MyWindowsService 7 { 8 public partial class Service1 : ServiceBase 9 { 10 public Service1() 11 { 12 InitializeComponent(); 13 } 14 15 /// <summary> 16 /// 啟動服務時執行 17 /// </summary> 18 /// <param name="args"></param> 19 protected override void OnStart(string[] args) 20 { 21 FileStream fs = new FileStream(ConfigurationManager.AppSettings["LogFile"].ToString(), FileMode.OpenOrCreate, FileAccess.Write); 22 StreamWriter sw = new StreamWriter(fs); 23 sw.BaseStream.Seek(0, SeekOrigin.End); 24 sw.WriteLine(string.Format("Windows Service Start At {0} \n", DateTime.Now.ToString())); 25 sw.Flush(); 26 sw.Close(); 27 fs.Close(); 28 } 29 30 /// <summary> 31 /// 停止服務時執行 32 /// </summary> 33 protected override void OnStop() 34 { 35 FileStream fs = new FileStream(ConfigurationManager.AppSettings["LogFile"].ToString(), FileMode.OpenOrCreate, FileAccess.Write); 36 StreamWriter sw = new StreamWriter(fs); 37 sw.BaseStream.Seek(0, SeekOrigin.End); 38 sw.WriteLine(string.Format("Windows Service Stop At {0} \n", DateTime.Now.ToString())); 39 sw.Flush(); 40 sw.Close(); 41 fs.Close(); 42 } 43 } 44 }
安裝Windows服務
1、以管理員身份運行命令行工具
2、進入InstallUtil.exe文件夾
cd C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 或 cd C:\Windows\Microsoft.NET\Framework\v4.0.30319
3、安裝服務,如果路徑帶空格,用雙引號包起來
InstallUtil.exe "F:\maiaimei\WindowsService\Demo\MyWindowsService.exe"
卸載Windows服務
1、以管理員身份運行命令行工具
2、進入InstallUtil.exe文件夾
cd C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 或 cd C:\Windows\Microsoft.NET\Framework\v4.0.30319
3、卸載服務,如果路徑帶空格,用雙引號包起來
InstallUtil.exe /u "F:\maiaimei\WindowsService\Demo\MyWindowsService.exe"
這里強調的是以管理員身份運行命令行工具,否則有可能報錯
正在安裝程序集“F:\maiaimei\WindowsService\Demo\MyWindowsService.exe”。 受影響的參數是: logtoconsole = logfile = F:\maiaimei\WindowsService\Demo\MyWindowsService.InstallLog assemblypath = F:\maiaimei\WindowsService\Demo\MyWindowsService.exe 正在安裝服務 MyWindowsService... 正在日志 Application 中創建 EventLog 源 MyWindowsService... 正在回滾程序集“F:\maiaimei\WindowsService\Demo\MyWindowsService.exe”。 受影響的參數是: logtoconsole = logfile = F:\maiaimei\WindowsService\Demo\MyWindowsService.InstallLog assemblypath = F:\maiaimei\WindowsService\Demo\MyWindowsService.exe 正在將事件日志還原到源 MyWindowsService 的前一狀態。 在 System.Diagnostics.EventLogInstaller 安裝程序的“回滾”階段發生異常。 System.Security.SecurityException: 未找到源,但未能搜索某些或全部事件日志。 不可訪問的日志: Security。 在安裝的“回滾”階段發生異常。將忽略該異常並繼續回滾。但是,在完成回滾后計算機可能無法完全還原到它的初始狀態。
