[實作] C# Windows Service - Step01. 建立基本專案

.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

 

選擇自訂動作

點選右鍵加入自訂動作

點選「User's Programs Menu」兩下

點選「Add Output」

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

加入成功後的畫面

 

8. 建置並安裝

建置專案

接著右鍵選擇安裝

安裝完成

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

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

 

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

 

9. 確認執行結果

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

 

 

 

 

 

參考


  1. 建立 Windows 服務應用程式
  2. [C#] windows service建立範例
  3. [C#] Windows Service撰寫
  4. C#筆記 - Windows Service程式【二】- 安裝與啟用服務
  5. 用c#製做和安裝service心得整理