C#一个简单的定时小程序实现代码
之前一直觉得定时程序好神秘,后来,当我自己真正写了一个小的定时程序时,发现其实没有想象中的那么难。下面,我分享一下我自己的操作过程,希望能对大家有帮助。
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,到现在为止,一个完整的定时程序就写完啦,小伙伴们,欢迎大家提出宝贵意见。
上一篇: C# 读写XML(代码分享)
下一篇: 用Photoshop制作漂亮的淘宝主图