这里是你想要的功能:
  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:  <?xml 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^.

原创文字只代表本人某一时间内的观点或结论,本人不对涉及到的任何代码担保。转载请标明出处!




https://www.cnblogs.com/leleroyn/p/4710872.html