C# Asp.net Quartz.NET做業調度之建立、安裝、卸載、調試windows服務的簡單事例

1、建立windows服務windows

一、用VS建立windows服務,結果以下:設計模式

二、刪除默認生成的Service1.cs文件,而後建立本身的服務文件(如:MyService),並修改Program.cs文件的代碼,以下:ide

此時,解決方案的目錄結構以下:工具

三、雙擊MyService.cs服務文件,在左側設計模式中,右鍵,點擊「添加安裝程序」,自動會生成Projectinstaller.cs文件以及兩個安裝組件,以下:編碼

 

四、右鍵」ServiceProcessInstaller1「,選擇屬性,設置Account 賬號方式,建議爲LocalService,以下:spa

五、右鍵」ServiceInstaller1「,選擇屬性,設置屬性設計

  a)Description 服務描述,直接顯示到Windows服務列表中的描述;3d

  b)DisplayName 服務顯示名稱,直接顯示到Windows服務列表中的名稱;調試

  c)ServiceName 服務進程名稱,安裝與卸載服務時的惟一標識.日誌

以下:

六、建立安裝服務批處理文件Install.bat,能夠建立記事本,而後修改後綴爲bat,記事本內容以下:

%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe WindowsServiceDemo.exe
Net Start MyService
sc config MyService start= auto
pause

記事本另存爲時設置編碼爲ANSI,以下圖:

七、同理建立建立卸載服務批處理文件Uninstall.bat,內容以下:

%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe /u WindowsServiceDemo.exe
pause

此時解決方案的目錄結構以下:

 

2、寫服務代碼

右鍵」MyService.cs「,選擇查看代碼,以下:

namespace WindowsServiceDemo
{
    partial class MyService : ServiceBase
    {
        public MyService()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            // TODO: 在此處添加代碼以啓動服務。
        }

        protected override void OnStop()
        {
            // TODO: 在此處添加代碼以執行中止服務所需的關閉操做。
        }
    }
}

下面實現本身的簡單功能,代碼以下:

using System;
using System.Diagnostics;
using System.IO;
using System.ServiceProcess;
using System.Timers;

namespace WindowsServiceDemo
{
    partial class MyService : ServiceBase
    {
        private Timer time = new Timer();
        public MyService()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            WriteLog("服務啓動,時間:"+DateTime.Now.ToString("HH:mm:ss") + "\r\n");

            time.Elapsed += new System.Timers.ElapsedEventHandler(MethodEvent);
            time.Interval = 2 * 1000;//時間間隔爲2秒鐘
            time.Start();
        }

        protected override void OnStop()
        {
            WriteLog("服務中止,時間:" + DateTime.Now.ToString("HH:mm:ss") + "\r\n");
        }

        private void MethodEvent(object source, System.Timers.ElapsedEventArgs e)
        {
            time.Enabled = false;

            string result = string.Empty;
            string startTime = DateTime.Now.ToString("HH:mm:ss");
            try
            {
                //.........

                result = "執行成功,時間爲:"+ startTime;
            }
            catch (Exception exp)
            {
                result = "失敗,緣由:" + exp.Message;
            }
            finally
            {
                WriteLog(result);

                time.Enabled = true;
            }
        }

        /// <summary>
        /// 日誌記錄
        /// </summary>
        /// <param name="logInfo"></param>
        public void WriteLog(string logInfo)
        {
            try
            {
                string logDirectory = AppDomain.CurrentDomain.BaseDirectory + "\\Logs";
                if (!Directory.Exists(logDirectory))
                {
                    Directory.CreateDirectory(logDirectory);
                }
                string filePath = logDirectory + "\\" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt";
                File.AppendAllText(filePath, logInfo);
            }
            catch
            {
            }
        }
    }
}

 

具體功能是2秒鐘執行一次,並記錄日誌。

3、安裝windows服務

從新生成整個解決方案,成功後,從項目所在文件夾賦值bin文件到某個自定義的文件夾,並將Install.bat和Uninstall.bat複製到bin下的Debug文件夾中。

以管理員身份運行Install.bat安裝服務,成功結果以下圖:

這是右鍵「個人電腦」,選擇「管理」,選擇「服務」,就能夠看到服務已安裝,以下圖:

同時,Debug文件夾裏有了Logs文件,Logs文件夾裏有txt文檔,內容以下:

能夠看到沒2秒鐘執行一次。

 

4、卸載windows服務

卸載服務,一樣以管理員身份運行Uninstall.bat便可。

5、調試windows服務

打斷點,在工具欄選「調試」下的「附加到進程」,附加本身的服務便可調試。

相關文章
相關標籤/搜索