• 一个简单的定时小程序


    之前一直觉得定时程序好神秘,后来,当我自己真正写了一个小的定时程序时,发现其实没有想象中的那么难。下面,我分享一下我自己的操作过程,希望能对大家有帮助。

    1)在我们的项目中添加引用文件:TaskSchedulerEngine.dll(dll定义了一个ITask接口,定义了两个方法Initialize和HandleConditionsMetEvent);

    2)创建一个定时触发的类:SyncTask.cs(类名自己随便定义),该类必须实现接口 ITask。具体代码如下:

    public class SyncTask : ITask
    {
      //接受传递过来的参数的变量
      private string configName;
      
        /// <summary>
      /// 具体操作的代码
      /// </summary>
      public void HandleConditionsMetEvent(object sender, ConditionsMetEventArgs e)
      {
        try
        {
          // 此处为具体的操作
        }
        catch (Exception ex)
        {
          //抛出异常,记录错误日志
        }
      }
    
      /// <summary>
      /// 初始化
      /// </summary>
      /// <param name="schedule"></param>
      /// <param name="parameters">参数(该参数在定时触发设置时传递)</param>
      public void Initialize(ScheduleDefinition schedule, object parameters)
      {
                //通过传递过来的参数来初始化变量
        configFileName = parameters.ToString();
        try
        {
          //初始化的具体代码
        }
        catch (Exception e)
        {
              //抛出异常,记录错误日志 
        }
      }
    }    

    3)配置app.config文件,配置文件的参数设置说明:

        a.  <at></at>是一个Task,如果不同的时间触发不同的程序,则需要设置多个<at>; name:就是每个<at>的名字,可以根据自己的需要随便起名; month:该Task在哪个月份触发,* 表示每个月都触发 ;dayofMonth:每个月的几号触发,* 表示每天;dayOfWeek:每周几触发,* 表示每天都触发;hour:每天的几点触发,* 表示每小时触发一次;minute:每小时的几分钟触发,58表示每小时的58分触发;second:每分钟的几秒触发。

        b. <task>是需要触发的类,type:"需要触发的类所在的详细地址(项目名.文件夹名.类名),项目名,Version,Culture,PublicKeyToKen",parameters:需要传递的参数,如果不传递参数可以设置为"" ;

    <taskSchedulerEngine>
        <schedule>
          <at name="TaskName" month="*" dayOfMonth="*" dayOfWeek="*" hour="*" minute="58" second="0" kind="Local">
            <execute>
              <task type="Test.Task.SyncTask, Test, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" parameters="FtpConfig.xml" />
            </execute>
          </at>
        </schedule>
    </taskSchedulerEngine>

    4)主程序来开启定时程序:

    SchedulerRuntime.StartWithConfig();

    OK,到现在为止,一个完整的定时程序就写完啦,小伙伴们,欢迎大家提出宝贵意见。

  • 相关阅读:
    区块链python演示
    网页H5图片预览滑动模仿新浪微博插件
    AngularJS
    实现A Painless Q-learning Tutorial (深度学习笔记二)
    python线性拟合数据(深度学习笔记一)
    雪花特效登录页面
    ASP.NET Core中使用NLog记录日志
    EFCore中代码优先锲约和数据类型与数据库的对应关系
    所有数据库连接字符串示例
    看到12_234_678差点怀疑人生的事儿
  • 原文地址:https://www.cnblogs.com/fenglovewang/p/3507264.html
Copyright © 2020-2023  润新知