惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

大猫的无限游戏
大猫的无限游戏
阮一峰的网络日志
阮一峰的网络日志
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
WordPress大学
WordPress大学
博客园 - 叶小钗
Hugging Face - Blog
Hugging Face - Blog
博客园 - 司徒正美
Last Week in AI
Last Week in AI
罗磊的独立博客
量子位
Jina AI
Jina AI
T
Tailwind CSS Blog
Apple Machine Learning Research
Apple Machine Learning Research
IT之家
IT之家
美团技术团队
雷峰网
雷峰网
爱范儿
爱范儿
S
SegmentFault 最新的问题
小众软件
小众软件
月光博客
月光博客
酷 壳 – CoolShell
酷 壳 – CoolShell
人人都是产品经理
人人都是产品经理
The Cloudflare Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报

博客园 - Ants

我用 AI 辅助开发了一系列小工具(2):图片压缩工具 我用 AI 辅助开发了一系列小工具(1):文件提取工具 Spring Cloud中,Eureka常见问题总结 部署Spring Boot应用 C# FTP 命令无法获取ServerU目录列表问题 redis参数优化 memcached在windows下多实例并存 WebRequest 访问 https Python定时任务框架APScheduler 3.0.3 Cron示例 Eclipse安装python注意事项 C# 计算文件MD5 C# 为私有方法添加单元测试(反射) .net 操作sftp服务器 在ASP.NET MVC中使用Unity进行依赖注入的三种方式 ASP.NET Web API 安全筛选器 Token Based Authentication in Web API 2 IIS中查看W3P.exe进程对应的应用程序池的方法 WCF自定义Header sqlserver 用 RowNumber 分组
开源一个windows下的定时任务框架,简单粗暴好用。
Ants · 2015-08-07 · via 博客园 - Ants

这里是你想要的功能:

  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^.