C# 創建windows服務並定時執行

一、創建window服務

1、新建項目–>選擇Windows服務。默認生成文件包括Program.cs,Service1.cs

2、在Service1.cs添加如下代碼:

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.Threading.Tasks;

namespace Service1
{
    partial class Service1: ServiceBase
    {
        System.Timers.Timer _Timer;  //計時器
        private static object _LockSMS_Send = new object();
        public GGGoodsRack()
        {
            InitializeComponent();
        }
        protected override void OnStart(string[] args)
        {
            // TODO: 在此處添加代碼以啓動服務。
            int minute = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["GapDate"].ToString());
            this._Timer = new System.Timers.Timer();
            this._Timer.Interval = minute * 60 * 1000;  //設置計時器事件間隔執行時間
            this._Timer.Elapsed += new System.Timers.ElapsedEventHandler(Timer_Elapsed);
            this._Timer.Enabled = true;
        }
        protected override void OnStop()
        {
            // TODO: 在此處添加代碼以執行停止服務所需的關閉操作。
            this._Timer.Enabled = false;
        }
        private void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            Log.Read(DateTime.Now.ToString("-----------------------------------時 間:yyyy-MM-dd HH:mm:ss------------------------------------"));
            DateTime t1 = DateTime.Now;
            Log.Read(" ");
            Log.Read(string.Format("執行時間:{0}分{1}秒", (DateTime.Now - t1).Minutes, (DateTime.Now - t1).Seconds));
            Log.Read(" ");
        }
    }
}

二、添加window服務安裝程序

1、打開Service1.cs【設計】頁面,點擊右鍵,選擇【添加安裝程序】,會出現serviceInstaller1和serviceProcessInstaller1兩個組件

2、將serviceProcessInstaller1的Account屬性設爲【LocalSystem】, serviceInstaller1的StartType屬性設爲【Automatic】,ServiceName屬性可設置服務名稱,此後在【管理工具】–》【服務】中即顯示此名稱

3、ProjectInstaller.cs文件,在安裝服務後一般還需手動啓動(即使上述StartType屬性設爲【Automatic】),可在ProjectInstaller.cs添加如下代碼實現安裝後自動啓動

public ProjectInstaller()
{
    InitializeComponent();
    this.Committed += new InstallEventHandler(ProjectInstaller_Committed);   
}

private void ProjectInstaller_Committed(object sender, InstallEventArgs e)
{
    //參數爲服務的名字
    System.ServiceProcess.ServiceController controller = new System.ServiceProcess.ServiceController("服務名稱");
    controller.Start();
}   

三、安裝、卸載window服務

1、輸入cmd(命令行),輸入cd C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319,2.0爲cd C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727

2、安裝服務(項目生成的exe文件路徑)

InstallUtil “E:\WindowsService1\bin\Debug\WindowsService1.exe”

3、卸載服務

InstallUtil /u “E:\WindowsService1\bin\Debug\WindowsService1.exe”

四、查看window服務

控制面板–>管理工具–>服務,可在此手動啓動,停止服務

五、調試window服務

1、通過【事件查看器】查看

2、直接在程序中調試(菜單–>調試–>附加進程–>服務名(這裏的服務名是項目名稱,不是ServiceName屬性自定義的名稱,所以建議自定義名稱和項目名稱保持一致,另外需勾選【顯示所有用戶的進程】才能看到服務名)–>附加

  1. 在程序中打斷點調試即可,另外調試服務時服務必須已啓動(管理工具–>服務)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章