工作已經很久,時隔這么長時間寫這篇文章是給自己以后做參考。也不至於以后長時間不寫Windows服務而忘記整個開發過程。windows服務開發,基礎的就不說了,直接上過程。
1、新建windows服務項目,我這里選擇的是Framework4.0,沒有選擇高版本是為了防止在服務在一些低版本系統上無法正常運行。
2、添加Windows服務的安裝程序。
在默認Service1設計器界面空白處點擊右鍵->添加安裝程序,系統會自動新建一個帶有默認配置的安裝程序類,如下圖:
新建完安裝程序后,需要給默認的serviceInstaller1和serviceProcessInstaller1做一些基本的屬性設置。如下圖:
以上工作完成,安裝程序配置完畢。
注意:如果不給服務添加安裝程序,后面是沒法把服務安裝至windows系統里的。
3、添加應用程序配置文件(如果有需要的話)。
如果項目有需要,一些應用程序的配置參數可以設置在此文件里(例如:數據庫連接字符串)。
4、編寫windows服務主代碼
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Linq; using System.ServiceProcess; using System.Text; using System.IO; namespace OrganizClientSocketService { public partial class Service1 : ServiceBase { public Service1() { InitializeComponent(); System.Timers.Timer timer = new System.Timers.Timer(); timer.Elapsed += new System.Timers.ElapsedEventHandler(TimedEvent); timer.Interval = 5000;//每5秒執行一次 timer.Enabled = true; } //定時執行事件 private void TimedEvent(object sender, System.Timers.ElapsedEventArgs e) { //業務邏輯代碼 } protected override void OnStart(string[] args) { this.WriteLog("搜才Organiz客戶端數據同步服務:【服務啟動】"); } protected override void OnStop() { this.WriteLog("搜才Organiz客戶端數據同步服務:【服務停止】"); } protected override void OnShutdown() { this.WriteLog("搜才Organiz客戶端數據同步服務:【計算機關閉】"); } #region 記錄日志 /// <summary> /// 記錄日志 /// </summary> /// <param name="msg"></param> private void WriteLog(string msg) { //string path = @"C:\log.txt"; //該日志文件會存在windows服務程序目錄下 string path = AppDomain.CurrentDomain.BaseDirectory + "\\log.txt"; FileInfo file = new FileInfo(path); if (!file.Exists) { FileStream fs; fs = File.Create(path); fs.Close(); } using (FileStream fs = new FileStream(path, FileMode.Append, FileAccess.Write)) { using (StreamWriter sw = new StreamWriter(fs)) { sw.WriteLine(DateTime.Now.ToString() + " " + msg); } } } #endregion } }
5、編譯生成,安裝windows服務至Windows系統。
完成開發后,對整各項目進行編譯生成。在windows服務開發文件夾“\bin\Debug”下,就是我們需要安裝的服務,建議把里面的所有文件拷貝至系統里的某個目錄進行安裝。
我是把整個個文件夾里的文件拷貝到c:\WindowService文件夾下。然后打開目錄C:\Windows\Microsoft.NET\Framework64\v4.0.30319,拷貝里面的InstallUtil.exe文件至c:\WindowService文件夾下)。
注意:我的系統是windows10,64位系統,我的服務也將安裝至64位系統下,所以我是進入C:\Windows\Microsoft.NET\Framework64\v4.0.30319目錄拷貝InstallUtil.exe文件。各位安裝的時候,根據你安裝的目標系統,來覺得是拷貝哪個framework哪個版本,具體是64位的還是32位的也由你系統決定。
做好以上工作后就可以安裝了,打開cdm就可執行安裝了(一定要以管理員身份運行喲,要不然安裝時會報“Windows服務安裝異常:System.Security.SecurityException: 未找到源,但未能搜索某些或全部事件”)。
以下是安裝命令、啟動服務命令、停止服務命令、卸載服務命令:
安裝命令:C:\WindowService\InstallUtil.exe C:\WindowService\OrganizClientSocketService.exe
啟動服務命令:net start 搜才Organiz客戶端數據同步服務
關閉服務命令:net stop 搜才Organiz客戶端數據同步服務
卸載服務命令:C:\WindowService\InstallUtil.exe -u C:\WindowService\OrganizClientSocketService.exe