c#定时运行程序分享(定时程序)

时间:2023-12-11 20:47:31 

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,到现在为止,一个完整的定时程序就写完啦。

标签:定时运行程序
0
投稿

猜你喜欢

  • Java硬币翻转倍数递增试算实例

    2021-09-29 08:39:22
  • 详解Java发送HTTP请求

    2022-01-09 14:53:57
  • 在spring中手写全局异常拦 截器

    2023-11-09 01:25:42
  • Android编程实现画板功能的方法总结【附源码下载】

    2023-08-05 10:45:07
  • dubbo将异常转换成RuntimeException的原因分析 ExceptionFilter

    2023-11-24 14:25:13
  • c#基础系列之ref和out的深入理解

    2023-05-20 10:51:50
  • Android中使用itemdecoration实现时间线效果

    2021-10-08 12:15:49
  • 解决fastjson泛型转换报错的解决方法

    2023-04-02 03:10:44
  • Seata 环境搭建部署过程

    2021-09-06 08:45:36
  • 腾讯云部署javaWeb项目的实现步骤

    2023-11-05 18:03:29
  • Java实现为Word每一页设置不同图片水印的效果

    2023-01-30 07:10:04
  • SpringBoot使用MyBatis-Plus解决Invalid bound statement异常

    2022-12-23 12:13:13
  • 微信js-sdk+JAVA实现“分享到朋友圈”和“发送给朋友”功能详解

    2021-10-20 23:13:51
  • java 中sendredirect()和forward()方法的区别

    2021-11-07 18:39:28
  • Java中将File转化为MultipartFile的操作

    2021-07-05 21:25:32
  • Java基于对象流实现银行系统

    2023-09-10 02:54:21
  • 聊一聊jdk1.8中的ArrayList 底层数组是如何扩容的

    2023-11-16 08:55:50
  • C#获取Word文档中所有表格的实现代码分享

    2023-05-12 10:01:46
  • Linux下Java开发环境搭建以及第一个HelloWorld

    2023-11-06 01:09:57
  • 深入理解Java设计模式之抽象工厂模式

    2023-11-28 12:11:34
  • asp之家 软件编程 m.aspxhome.com