.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心得整理