• 创建一个简单的windows服务,每间隔一定时间重复执行批处理文件


    创建一个windows服务项目,增加App.config

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <appSettings>
        <add key="AutoBatPosition" value="C:TestBatat	est.bat" />
        <add key="IntervalSecond" value="30"/>
      </appSettings>
    </configuration>
    View Code

    新建类BusinessLogic.cs,主要的业务逻辑都在此类中

    public class BusinessLogic
    {
        System.Timers.Timer timer;
        String autoBat = System.Configuration.ConfigurationManager.AppSettings["AutoBatPosition"]; //批处理文件的路径       
            public static NLog.Logger log = NLog.LogManager.GetCurrentClassLogger();//执行间隔
    
        public void Run()
        {
            int intervalSecond = int.Parse(System.Configuration.ConfigurationManager.AppSettings["IntervalSecond"]);
            timer = new System.Timers.Timer(intervalSecond * 1000); //间隔秒
            timer.AutoReset = true;
            timer.Enabled = true;  //一直执行
            timer.Elapsed += new ElapsedEventHandler(DoMerger);
            timer.Start(); 
        }
    
        //调用批处理
        private void DoMerger(object source, System.Timers.ElapsedEventArgs e)
        {
            try
            {
                log.Info("开始");
    
                log.Info("执行批处理开始");
                System.Diagnostics.Process process = new System.Diagnostics.Process();
                process.StartInfo.FileName = autoBat;
                process.StartInfo.UseShellExecute = false; //此处必须为false否则引发异常
                process.Start();
                process.WaitForExit();
                log.Info("执行批处理结束");
                log.Info("结束");
            }
            catch (Exception ex)
            {
                log.Error(ex.ToString());
            }
        }
    
        public void Stop()
        {
            timer.Close();
        }
    }

    BusinessLogic.cs类创建完成,那么接下来就是调用了,打开Service1.cs,切换到代码视图

    public partial class Service1 : ServiceBase
    {
        BusinessLogic logic = null;
        public Service1()
        {
            InitializeComponent();
            logic = new BusinessLogic();
        }
    
        protected override void OnStart(string[] args)
        {
            logic.Run();
        }
        
        protected override void OnStop()
        {
            logic.Stop();
        }
    }
  • 相关阅读:
    python列表(包含列表方法)
    python数据类型和运算符
    python计算机初识
    python运行过程,变量,符号
    python·if语句
    python`while循环
    <select></select> php表单怎么传值
    thinkPhp3 空操作
    thinkphp3.1和3.2的<模板替换>的区别
    thinkphp3 空操作 如果为空会怎么样 empty name=""
  • 原文地址:https://www.cnblogs.com/ggooo/p/4995745.html
Copyright © 2020-2023  润新知