定时任务的设置&使用

定时任务,简单的说就是雇个免费钟点工,让他在特定时间去自动帮你完成某些你已经分配好了的任务。在哪个时间段启动定时任务,让它自动的去帮忙处理些事情,这些都可以靠自己去设置和定义,和JavaScript中的定时器类似但却有趣的多。那么,定时任务是怎么设置的呢?

首先我们需要用到一个插件:FluentScheduler,先将它放入自己的项目文件中然后在项目资源管理器中点击“引用”项,右键打开菜单,点击添加引用,接着就会弹出文件引用管理器,在管理器的右下角点击浏览,选择到刚才放入项目文件中的定时任务插件,这样便成功将插件引用成功,完成第一步操作。
在这里插入图片描述
紧接着,便要给成功引入的定时任务一个“家(夹)”。需要在项目中创建文件夹专门用于存放定时任务的各个类模块。定时任务一般分为三个模块:执行(TestJob) - 管理(MyRegistry) - 清理(ClearJob),我们要在每个模块设置相应的功能,最后组合成一个完整的定时任务。

1.执行(TestJob)模块:在此页面中可以设置任务具体要做什么,在什么位置开始执行任务。
在这里插入图片描述
示例:当定时任务执行后,往G:/log.txt文件内输出当前的时间,如果G:/log.txt文件不存在就创建它:
(1)定义string类型变量获取G/log.txt的路径
string path = “G:/log.txt”;

(2)获取文件,若文件不存在则通过StreamWriter方法创建
TextWriter textWriter = new StreamWriter(path, true, new UTF8Encoding(false));

(3)往文件内打印当前时间
textWriter.WriteLine(DateTime.Now.ToString(“yyyy-MM-dd HH:mm:ss”));
textWriter.Close();

将定义好的任务写入Execute()中,任务的执行模块便成功设置完成。

2.管理(MyRegistry)模块,在该页面中则是设置任务开始执行的时间,以及任务执行的间隔时间,隔多久运行一次任务,这些都是要通过插件内封装好的方法来进行定义才可以生效的。
在这里插入图片描述
Schedule《ClearJob》().ToRunNow().AndEvery(10).Seconds();

Schedule《ClearJob》()方法:在项目启动后,立即执行绑定的计划任务,并根据指定好的时间间隔执行计划任务,指定一个时间间隔运行,根据自己需求,可以是秒、分、时、天、月、年等。将该方法写入MyRegistry()类中,指定每隔(10)秒就往指定的文件中打印当前的时间。任务执行时间&间隔时间定义完成。

3.清理(ClearJob)模块,该模块可以根据项目的需求来使用,一般用于按时清理项目中的某些临时文件&临时文件夹,或是一些无用的缓存数据,只要获取待清理的文件&文件夹路径,再设置号具体要删除的数据,通过管理模块中定义好的任务执行时间来达成按时清理无用或垃圾文件的效果,是个十分方便的功能。
在这里插入图片描述
当然,清理文件夹中的无用文件一般是将任务执行的时间定义到每天的晚上三点到五点左右的那个时间段,那个时候一般大家都在休息中,尽量避开人们的工作时间进行对无用文件的清除,间隔时间也不能是每十秒清除一次,十秒只是用于测试的,可以较快看到结果。

(1)获取项目的运行目录 + Document\Temp来获取临时目录的绝对路径
string str = AppDomain.CurrentDomain.BaseDirectory + “Document\Temp\”;

(2)判断是否存在Temp临时目录
if (Directory.Exists(str))
{ //存在
//删除子文件夹
string[] directories = Directory.GetDirectories(str);
foreach (string directory in directories)
{
Directory.Delete(directory, true);
}
//删除子文件
string[] files = Directory.GetFiles(str);
foreach (string file in files)
{
System.IO.File.Delete(file);
}
}
else
{ //不存在,则创建临时文件夹
Directory.CreateDirectory(str);
}

三个模块全部定义完成后,最后要做的就是在项目的数据入口页面中进行对定时任务的注册。然而,项目入口在什么地方呢? 在一开始创建MVC项目时系统便自动帮你创建好的源文件:Global.asax,如下图:
在这里插入图片描述
找到项目入口文件后打开,注册定时任务:JobManager.Initialize(new MyRegistry());,一句代码便可以完成注册,其余两句是项目入口页原本就有的。
在这里插入图片描述
完成以上操作,定时任务便设置完成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在上一个资源v1.0基础上的增强和改进! 1、解压。解压得到名为"schedule"的目录 2、打开界面。双击里面的schedule v1.1.html打开 3、解除限制。单击浏览器弹出框“允许阻止的内容”,可以看到效果 功能说明: 界面采用bootstrap和JEasyUI技术实现,提供三种任务运行规则:一次性、周期性、自定义 1、一次性(i:立即运行;ii:在规定的时间刻运行) 2、周期性(i:按小时;ii:按天 iii:按周; iv:按月(日);v: 按月(星期) ) 3、自定义(自定义功能,用户可以在前台随意定制执行计划,只要符合spring schedule cronExpression语法) 使用说明: 一: /* line 96 */ var action = "edit";//edit,add,view action用来指定用户动作,新增、编辑(修改)、查看 二: /* line 108 */ var cronExpression = "13 12 11 1 11 ? 2017";//when action is edit or view this value is useful cronExpression 的建意值: cronExpression=""; // action为空时 cronExpression =$("cronExpression");//当action为edit或view时, 把后面传过来的表达式值赋给cronExpression,界面会自动判断该如何展示 三: /* line 628 */ $("#sbmt").click(function() {//按钮事件....} 表单按钮提交事件相关代码自已根据实际情况替换修改。 亮点: i:日期选择功能使用JEasyUI的datetime,并在选择框上加了限制,不能选择早于当前的日期 ii:时间选择功能使用JEasyUI的spinner实现 iii: 自定义功能用户可以随意定制执行计划 iv:采用bootstrap的pills实现tab(选项卡)功能,界面友好 v: 打开修改界面时界面会根据后台cronExpression值智能展示tab和radio及表单值。规则:优先顺序:一次性、周期性、自定义 vi: 提交前javascript会对cronExpression进行严格的规则验证 vii: 使用javascript正则表达式实现各定时分类的匹配展示 viii: 强兼容性,集成时能与其它css样式文件兼容,尽量把schedule.html内部样式表中的样式放在目标集成界面中样式的后面避免覆盖 另:内附schdule Spring后台核心代码供后台开发参考
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值