zoukankan      html  css  js  c++  java
  • C# 创建window服务 -- 定时任务

    1. 新建项目  ---  windows桌面 --- windows服务

     

      

    2. 右击  ----   添加安装程序 

     

    3. 右击 --- 属性

     

     

     

     

    4. 右击service1查看代码

    public partial class Service1 : ServiceBase
        {
            private int num = 1;
            public Service1()
            {
                InitializeComponent();
            }
    
            /// <summary>
            /// 启动服务
            /// </summary>
            /// <param name="args"></param>
            protected override void OnStart(string[] args)
            {
                serviceLog("service Start.");
    
                // Set up a timer that triggers every minute. 设置定时器
                Timer timer = new Timer();
                timer.Interval = 60000; // 60 seconds 60秒执行一次
                timer.Elapsed += new ElapsedEventHandler(this.OnTimer);
                timer.Start();
            }
    
            /// <summary>
            /// 停止服务
            /// </summary>
            protected override void OnStop()
            {
                serviceLog("service Stop.");
            }
    
            /// <summary>
            /// 继续服务
            /// </summary>
            protected override void OnContinue()
            {
                serviceLog("service OnContinue.");
            }
    
            /// <summary>
            /// 定时器中定时执行的任务
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="args"></param>
            public void OnTimer(object sender, ElapsedEventArgs args)
            {
                DataLog dataLog = new DataLog();
                #region//执行的事件            
                try
                {
                    ////记录数据日志
                    dataLog.WriteLogEx("" + num + "次执行!");
                    num++;
                }
                catch (Exception ex)
                {
                    dataLog.ErrorLog(ex.Message);
                }
    
    
                #endregion
    
    
                serviceLog("service Execute.");
            }
    
    
    
            /// <summary>
            /// 服务日志记录到指定路径:D:serviceLog.txt
            /// </summary>
            /// <param name="message"></param>
            private static void serviceLog(string message)
            {
                using (FileStream stream = new FileStream("D:\serviceLog.txt", FileMode.Append))
                using (StreamWriter writer = new StreamWriter(stream))
                {
                    writer.WriteLine($"{DateTime.Now}:{message}");
                }
            }
    
    
        }
    View Code

     5. 日志类

    public class DataLog
        {
            #region 写日志
            public void WriteLogEx(string dataInfo, string fileName = "")
            {
                string path = AppDomain.CurrentDomain.BaseDirectory;
                string logDir = "log";
                logDir += "\" + DateTime.Now.ToString("yyyy") + "\" + DateTime.Now.ToString("MM");
                path = Path.Combine(path, logDir);
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                try
                {
                    StringBuilder log = new StringBuilder();
                    log.Append(Environment.NewLine);
                    log.Append("================BEGIN");
                    log.Append(DateTime.Now);
                    log.Append("================");
                    log.Append(Environment.NewLine);
                    log.Append(dataInfo);
                    log.Append(Environment.NewLine);
                    log.Append("================END ");
                    log.Append(DateTime.Now);
                    log.Append("================");
                    log.Append(Environment.NewLine);
    
                    fileName = string.IsNullOrWhiteSpace(fileName) ? DateTime.Now.Day.ToString() + "" : fileName;
                    fileName = fileName + ".txt";
                    string file = Path.Combine(path, fileName);
                    System.IO.File.AppendAllText(file, log.ToString(), System.Text.Encoding.Default);
                }
                catch { }
            }
            #endregion
    
            #region 错误日志
            public void ErrorLog(string ExInfo, string fileName = "")
            {
                string path = AppDomain.CurrentDomain.BaseDirectory;
                string logDir = "ErrLog";
                logDir += "\" + DateTime.Now.ToString("yyyy") + "\" + DateTime.Now.ToString("MM");
                path = Path.Combine(path, logDir);
                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }
                try
                {
                    StringBuilder log = new StringBuilder();
                    log.Append(Environment.NewLine);
                    log.Append("================BEGIN");
                    log.Append(DateTime.Now);
                    log.Append("================");
                    log.Append(Environment.NewLine);
                    log.Append(ExInfo);
                    log.Append(Environment.NewLine);
                    log.Append("================END ");
                    log.Append(DateTime.Now);
                    log.Append("================");
                    log.Append(Environment.NewLine);
    
                    fileName = string.IsNullOrWhiteSpace(fileName) ? DateTime.Now.Day.ToString() + "" : fileName;
                    fileName = fileName + ".txt";
                    string file = Path.Combine(path, fileName);
                    System.IO.File.AppendAllText(file, log.ToString(), System.Text.Encoding.Default);
                }
                catch { }
            }
            #endregion
        }
    View Code

    6. 重新生成解决方案

    7. 打开服务安装程序安装启动服务

    选择生成的exe文件(bin/debug文件夹下.exe文件)

     先安装 >> 再启动

    8. 我们来看看执行结果

     

     

      

    9. 先停止服务,再卸载服务

     

     

     

    服务安装程序分享(

    链接:https://pan.baidu.com/s/1sAiHj-WJ2bq00sn-s0Z6CA 
    提取码:gal0

     

     

  • 相关阅读:
    向Word模板中填充数据
    WCF学习笔记之消息交换模式
    Matlab图窗复制后visio中不能取消组合
    Tecplot 360 安装后弹出“Is your Tecplot 360 EX liense valid?”解决方法
    PS操作
    fluent仿真数值错误
    运行程序显示:Could not find version 8.3 of the MCR.
    matlab图片高清复制到visio
    51单片机常用头文件
    逻辑电平
  • 原文地址:https://www.cnblogs.com/JoeYD/p/12658743.html
Copyright © 2011-2022 走看看