zoukankan      html  css  js  c++  java
  • 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},执行了一次!");
                }
            }
        }
    }

    效果图如下:

     @博客园您好

  • 相关阅读:
    全面了解Nginx主要应用场景
    手把手教你构建 C 语言编译器
    Docker镜像原理和最佳实践
    Docker网络深度解读
    PostgreSQL 10.0 preview 功能增强
    阿里沈询:分布式事务原理与实践
    CPU、内存、IO虚拟化关键技术及其优化探索
    原理、方法双管齐下,大神带你细解Redis内存管理和优化---场景研读
    ASP.NET 5已终结,迎来ASP.NET Core 1.0和.NET Core 1.0 转
    RabbitMQ学习系列
  • 原文地址:https://www.cnblogs.com/chenwolong/p/13536247.html
Copyright © 2011-2022 走看看