1.創建windows服務應用
2.右鍵查看代碼
3.寫個計時器Timer using System.Timers;
如上圖,按tab鍵快速操作 會自動創建一個委托
改為下邊的方式,打印日志來記錄服務運行
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.IO; using System.Linq; using System.ServiceProcess; using System.Text; using System.Threading.Tasks; using System.Timers; namespace MyFirstWindowsService { public partial class Service1 : ServiceBase { public Service1() { InitializeComponent(); } protected override void OnStart(string[] args) { WriteRunLog("服務開始了!!!"); Timer timer = new Timer(); timer.Interval = 1000; timer.Elapsed += Timer_Elapsed; timer.Start(); } private void Timer_Elapsed(object sender, ElapsedEventArgs e) { WriteRunLog("當前時間:" + DateTime.Now.ToString("yyyy年MM月dd日 HH:mm:ss")); } protected override void OnStop() { WriteRunLog("服務結束了!!!"); } /// <summary> /// 記錄運行日志 /// </summary> /// <param name="writeMsg"></param> public void WriteRunLog(string writeMsg) { FIle_Common file = new FIle_Common(); file.CreateDire(@"F:\ServiceLog\"); using (FileStream fs = new FileStream(@"F:\ServiceLog\" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt", FileMode.OpenOrCreate, FileAccess.Write)) { StreamWriter m_streamWriter = new StreamWriter(fs); m_streamWriter.BaseStream.Seek(0, SeekOrigin.End); m_streamWriter.WriteLine("mcWindowsService:" + writeMsg + " Time:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "\n"); m_streamWriter.Flush(); m_streamWriter.Close(); fs.Close(); } } } }
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.IO; namespace MyFirstWindowsService { public class FIle_Common { /// <summary> /// 創建文件夾 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void CreateDire(string path) { if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } } /// <summary> /// 刪除文件夾 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void DeleteDire(string path) { if (Directory.Exists(path)) { Directory.Delete(path); } } /// <summary> /// 刪除文件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void DeleteDireOne(string path) { if (File.Exists(path)) { File.Delete(path); } } } }
4.右鍵添加安裝程序
5.我用的VS2019 .net4.8 此時安裝組件已經寫好了,但是設計圖里不顯示,下邊附上解決方案
6.解決方法:在這個類上邊 using System.ServiceProcess;
此時 兩個安裝組件都顯示出來了
7.設置服務安裝屬性
Description:對服務的說明
DisplayName:向用戶標識服務的友好名稱
ServiceName:表示在系統服務中的名稱
StartType:啟動服務的方式和時間,如果為Manual則手動啟動,默認停止,如果為Automatic為自動啟動
Accout:賬戶類型,LocalSystem本地系統服務
此時,Windows Service就編寫完了
8.安裝Windows Service
生成解決方案 進入\bin\Debug 下 添加兩個批處理文件來安裝 卸載服務
statr.bat MyFirstWindowsService.exe是\Debug下生成的.exe文件 MyFirstWindowsService是上邊設置的ServiceName
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe %~dp0MyFirstWindowsService.exe Net Start MyFirstWindowsService sc config MyFirstWindowsService start= auto pause
stop.bat
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe /u %~dp0MyFirstWindowsService.exe pause
運行statr.bat
右鍵 我的電腦 管理
若要卸載該服務,運行stop.bat