.Net Framework 4.8 Windows Service 範例程式
寫一個服務測試啟動後每10秒寫入檔案時間
檔案路徑會從App.config抓取
PS. 有修改Config檔後需要重新啟動服務才會抓到新的值
1. 建立Windows Service專案

2. 選擇切換程式碼檢視
3. 增加測試程式
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
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 WindowsServiceSample
{
public partial class Service1 : ServiceBase
{
//從App.config取出檔案路徑及名稱
private readonly string _FilePath = ConfigurationManager.AppSettings["FilePath"];
public Service1()
{
InitializeComponent();
}
/// <summary>
/// 服務啟動
/// </summary>
protected override void OnStart(string[] args)
{
File.AppendAllText(_FilePath, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " => 服務開始...");
var myTimer = new Timer();
myTimer.Elapsed += new ElapsedEventHandler(TimerEvent);
myTimer.Interval = 10 * 1000;
myTimer.Start();
}
/// <summary>
/// Timer要執行的事件
/// </summary>
public void TimerEvent(object sender, ElapsedEventArgs e)
{
//寫入現在時間測試服務結果
File.AppendAllText(_FilePath, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
}
/// <summary>
/// 服務結束
/// </summary>
protected override void OnStop()
{
File.AppendAllText(_FilePath, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " => 服務結束...");
}
}
}
4. 回到設計頁面,右鍵點選加入安裝程式

5. 在serviceProcessInstaller1上按右鍵點選屬性,然後將Account更換為LocalSystem


6. 設定serviceInstaller1的屬性內容
- Description:服務的說明文字
- DisplayName:服務名稱
- ServiceName:服務的名稱(如果需要透過C#控制Service時,就需要指定這個名稱)
- StartType:啟動狀態,通常是設定Automatic(開機後自動啟動)

7. 新增安裝專案

如果沒有該類型專案範本請參考以下連結做法
https://dotblogs.com.tw/kai/2019/11/04/165810
https://dotblogs.com.tw/kai/2019/11/04/165810
選擇自訂動作

點選右鍵加入自訂動作

點選「User's Programs Menu」兩下

點選「Add Output」

選擇好專案後,點選主要輸出,然後點選確定

加入成功後的畫面

8. 建置並安裝
先建置專案

接著右鍵選擇安裝

安裝完成

在服務中會看到剛剛安裝的WSExample

這邊顯示的名稱會對應到serviceInstaller1所設定的參數

如果需要解除安裝則一樣點選右鍵解除安裝


9. 確認執行結果
執行結果如我們在WindowsService上撰寫的程式碼相同

如果需要執行偵錯模式可參考[Windows Service] 替 Windows Service 專案加上 Debug 模式
參考
- 建立 Windows 服務應用程式
- [C#] windows service建立範例
- [C#] Windows Service撰寫
- C#筆記 - Windows Service程式【二】- 安裝與啟用服務
- 用c#製做和安裝service心得整理