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},执行了一次!");
                }
            }
        }
    }

    效果图如下:

     @博客园您好

  • 相关阅读:
    Form.KeyPreview 属性
    键盘输入、鼠标输入、焦点处理
    KeyDown,KeyPress 和KeyUp
    C#反射实例应用--------获取程序集信息和通过类名创建类实例
    Attribute操作的性能优化方式
    OBjective-C:atomic和nonatomic的区别
    Objective-C:OC内部可变对象和不可变对象的深(复制)拷贝问题思考:
    Objective-C:三种文件导入的方式比较
    Objective-C:保留计数器思想的详解(对象的保留和所有权的释放)
    Objective-C:深复制(拷贝)
  • 原文地址:https://www.cnblogs.com/chenwolong/p/13536247.html
Copyright © 2011-2022 走看看