zoukankan      html  css  js  c++  java
  • 开源一个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:  <?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^.

  • 相关阅读:
    flutter-常见的基础组件(一)
    flutter-dart语言初识
    从零开始配置安装Flutter开发环境
    vue路由vue-router
    css秘密花园一
    mvvm实现一个简单的vue
    js常见的设计模式一
    es6 generator函数的异步编程
    es6 async和await
    模块--random
  • 原文地址:https://www.cnblogs.com/leleroyn/p/4710872.html
Copyright © 2011-2022 走看看