zl程序教程

您现在的位置是:首页 >  后端

当前栏目

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

c#程序 运行 分享 定时
2023-06-13 09:15:15 时间

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

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

复制代码代码如下:


publicclassSyncTask:ITask
{
  //接受传递过来的参数的变量
  privatestringconfigName;
  
   ///<summary>
  ///具体操作的代码
  ///</summary>
  publicvoidHandleConditionsMetEvent(objectsender,ConditionsMetEventArgse)
  {
    try
    {
      //此处为具体的操作
    }
    catch(Exceptionex)
    {
      //抛出异常,记录错误日志
    }
  }

  ///<summary>
  ///初始化
  ///</summary>
  ///<paramname="schedule"></param>
  ///<paramname="parameters">参数(该参数在定时触发设置时传递)</param>
  publicvoidInitialize(ScheduleDefinitionschedule,objectparameters)
  {
           //通过传递过来的参数来初始化变量
    configFileName=parameters.ToString();
    try
    {
      //初始化的具体代码
    }
    catch(Exceptione)
    {
         //抛出异常,记录错误日志
    }
  }
}

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>
     <atname="TaskName"month="*"dayOfMonth="*"dayOfWeek="*"hour="*"minute="58"second="0"kind="Local">
       <execute>
         <tasktype="Test.Task.SyncTask,Test,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null"parameters="FtpConfig.xml"/>
       </execute>
     </at>
   </schedule>
</taskSchedulerEngine>

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

复制代码代码如下:
SchedulerRuntime.StartWithConfig();

OK,到现在为止,一个完整的定时程序就写完啦。