首页 > Windows开发 > 详细

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

时间:2015-11-25 21:45:39      阅读:646      评论:0      收藏:0      [点我收藏+]

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

技术分享
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="AutoBatPosition" value="C:\TestBat\bat\test.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();
    }
}

 

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

原文:http://www.cnblogs.com/ggooo/p/4995745.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!