你的位置:首页 > 操作系统

[操作系统]开源一个windows下的定时任务框架,简单粗暴。


这里是你想要的功能:

  1. 支持插件,将你要执行的任务编译成程序集放到框架的根目录下,再进行简单的配置就行了。
  2. 支持Corn表达式。想让任务在什么时候执行就在什么时候执行。
  3. 支持安装成windows service (通过topshelf实现)
  4. 保证任务在执行阶段,就算到了下一个触发时间,不重复执行(如果本次还没执行完的话)。
  5. 还有…等我想到了再实现^o^,您也可以关注项目的地址:https://github.com/leleroyn/Windows-TaskSchedule,提出你想要的功能。

简单介绍下项目的使用:

编写插件支持

需要实现框架中的Ijob接口,框架中内置了一个简单的不能再简单的示例任务。直接看代码:

  IJob
  1: using System;
  2: using System.Collections.Generic;
  3: using System.Linq;
  4: using System.Text;
  5:  
  6: namespace Windows.TaskSchedule
  7: {
  8:   public interface IJob
  9:   {
 10:     void Init();
 11:     void Excute();
 12:     void OnError(Exception ex);    
 13:   }
 14: }

 DemoJob

  1: using System;
  2: using System.Collections.Generic;
  3: using System.Linq;
  4: using System.Text;
  5:  
  6: namespace Windows.TaskSchedule
  7: {
  8:   public class DemoJob:IJob
  9:   {
 10:     static log4net.ILog logger = log4net.LogManager.GetLogger(typeof(DemoJob));
 11:     DateTime date = new DateTime();
 12:     public void Init()
 13:     {
 14:       date = DateTime.Now;
 15:     }
 16:  
 17:     public void Excute()
 18:     {
 19:       logger.Debug(date);      
 20:     }
 21:  
 22:     public void OnError(Exception ex)
 23:     {
 24:       logger.Debug(ex.ToString());
 25:     }    
 26:   }
 27: }

配置插件到框架中执行

通过修改configs目录下的Jobs.config文件,让框架识别你的任务。

Jobs.config

  1: <? version="1.0" encoding="utf-8" ?>
  2: <Jobs serverName="demo-server" displayName="测试服务" description="测试服务的描述">
  3:  <Job name="demoJob1" type="Windows.TaskSchedule.DemoJob,Windows.TaskSchedule" cornExpress="0/3 * * * * ?" />
  4: </Jobs>

参数说明:

serverName:发布成服务时的服务名称(最好不要有空格)

displayName:发布成服务时的服务显示名称

description:发布成服务时的服务描述

Job节点就是各个任务的具体配置了,name:任务的名称(最好唯一),type:插件的具体实例与程序集,cornExpress:任务执行的时间,只支持corn表达式

 

执行任务

如果是开发调试阶段,可以直接启动Windows.TaskSchedule.exe 这样可以直接在控制台输出相关信息。

如果要部署成windows服务,需要在命令行下 先执行Windows.TaskSchedule.exe install  进行安装,然后启动:Windows.TaskSchedule.exe start

卸载windows服务也很简单,直接执行 Windows.TaskSchedule.exe uninstall   具体可参考topshelf组件的使用方法。http://topshelf-project.com/

 

想要源码,如果你细心的话在文章的开头就应该有啦,我还是贴一下地址吧:https://github.com/leleroyn/Windows-TaskSchedule

申明一下,此项目主要是借助一些第三方的组件,有疑问或者建议可以在这或者github里给我留言,项目实际过程中出现任何问题概不负责^o^.