C# windows服務定時執行


十年河東,十年河西,莫欺少年窮

學無止境,精益求精

接着上一篇:C# 創建windows服務 並通過winform 程序控制服務的 安裝 啟動 停止 卸載 

本節來看看如何實現定時執行windows服務,其實也沒什么好說的,時間緊急,主要就是代碼,如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Threading.Tasks;

namespace WindowsServices
{
    public partial class MyService : ServiceBase
    {
        System.Timers.Timer timer1;  //計時器
        string filePath = @"D:\MyServiceLog.txt";
        public MyService()
        {
            InitializeComponent();
        }
      
        protected override void OnStart(string[] args)
        {
            using (FileStream stream = new FileStream(filePath, FileMode.Append))
            using (StreamWriter writer = new StreamWriter(stream))
            {
                writer.WriteLine($"{DateTime.Now},服務啟動!");
            }
            timer1 = new System.Timers.Timer();
            timer1.Interval = 3000;  //設置計時器事件間隔執行時間  每隔三秒執行一次
            timer1.Elapsed += new System.Timers.ElapsedEventHandler(timer1_Elapsed);
            timer1.Enabled = true;
        }

        protected override void OnPause()
        {
            //服務暫停執行代碼
            using (FileStream stream = new FileStream(filePath, FileMode.Append))
            using (StreamWriter writer = new StreamWriter(stream))
            {
                writer.WriteLine($"{DateTime.Now},服務暫停!");
            }
            //禁用定時器
            timer1.Enabled = false;
        }

        protected override void OnContinue()
        {
            //服務恢復執行代碼
            using (FileStream stream = new FileStream(filePath, FileMode.Append))
            using (StreamWriter writer = new StreamWriter(stream))
            {
                writer.WriteLine($"{DateTime.Now},服務恢復!");
            }
            //啟動定時器
            timer1.Enabled = true;
        }

        protected override void OnStop()
        {
            using (FileStream stream = new FileStream(filePath, FileMode.Append))
            using (StreamWriter writer = new StreamWriter(stream))
            {
                writer.WriteLine($"{DateTime.Now},服務停止!");
            }
            //禁用定時器
            timer1.Enabled = false;
        }

        private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            using (FileStream stream = new FileStream(filePath, FileMode.Append))
            using (StreamWriter writer = new StreamWriter(stream))
            {
                writer.WriteLine($"{DateTime.Now},執行了一次!");
            }
        }
    }
}

效果圖如下:

 

 @博客園您好


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM