IT知识库 购物 网址 游戏 小说 歌词 快照 开发 股票 美女 新闻 笑话 | 汉字 软件 日历 阅读 下载 图书馆 编程 China
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题 autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程 CSS/HTML/Xhtml html5 CSS XML/XSLT Dreamweaver教程 经验交流 开发者乐园 Android开发资料
站长资讯 .NET新手 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA VisualStudio ASP.NET-MVC .NET控件开发 EntityFramework WinRT-Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动 Html-Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP OracleERP DynamicsCRM K2 BPM 信息安全 企业信息 Android开发 iOS开发 WindowsPhone WindowsMobile 其他手机 敏捷开发 项目管理 软件工程 SQLServer Oracle MySQL NoSQL 其它数据库 Windows7 WindowsServer Linux
  IT知识库 -> C# -> Quartz.net 定时任务之Cron表达式 -> 正文阅读

[C#]Quartz.net 定时任务之Cron表达式

Quartz.net 定时任务之Cron表达式 一、cron表达式简单介绍和下载
  1、在上一篇博客“Quartz.net 定时任务之简单任务”中,我简单介绍了quartz的使用,而这篇博客我将介绍cron的具体使用(不足之处望大神斧正)
  1、cron是为了方便编写定时执行作业时间扩展出来的插件,这个有很多版本(网页版,窗体版等),cron表达式的存在,从而大大减低设置作业人员的操作难度和开发人员的编写难度。
  2、cron表达式下载地址:https://www.oschina.net/code/snippet_98719_23426 下载下来之后,我打开页面我们会看到如下的界面  (为网页版)
  

   注:如果网页路径失效,或者下载失败的码友,请不要着急,继续往下看
二、cron表达式的使用
  1、在网上也看到了很多关于cron的使用说明的文章(在此感谢各位好心分享的大神),运用cron表达式有2个关键的地方
    (1)、cron的怎么使用到项目中?
    (2)、cron表达式怎么反解析到对应的输入框中?
  2、cron运用到项目中和反解析
    (1)、在上一篇博客中,我简单介绍了quartz的使用,从而会有一些小bug和美观不足的缺点,在编写这篇博客之前我做了小小的美化,如下图
  

  注:模板是使用的layer后台框架   模板编写者:Layui_初学者 
  laery下载地址:http://layer.layui.com/  
  (2)、这次美化之后后台的架构也做了小小的变化。下面截图说明
  

 (3)、把下载好的layer放在Js->lib->layer文件夹下  说明Js->lib文件夹下放了jquery 这里不做介绍
 (4)、好了回归正题,在大家在上面的截图可以看出,下载下来的Cron表达式存放路径是在Content->Cron 路径,下面我们需要一个容器来放cron的页面,建立控制器(Quartz)如下
  

  可以看到在quartz控制器里面我们建立了2个视图 CronUse 视图、SetCron视图,不难看出两个视图的作用  CronUse视图是我们使用Cron的视图,SetCron是我们设置Cron的视图
  (5)、2个视图分别建好之后,我们在CronUse视图编写如下代码


 1 @{
 2     ViewBag.Title = "Cron的使用";
 3     Layout = "~/Views/Shared/_Layout.cshtml";
 4 }
 5 <link href="~/Content/BeginnerAdmin/plugins/layui/css/layui.css" rel="stylesheet" />
 6 <link href="~/Content/BeginnerAdmin/css/global.css" rel="stylesheet" />
 7 <script src="~/Js/lib/jquery-3.2.1/jquery-3.2.1.js"></script>
 8 <script src="~/Js/lib/layer/layer.js"></script>
 9 <script src="~/Js/lib/jquery-3.2.1/jquery-3.2.1.min.js"></script>
10 
11 
12 <div class="layui-form-item">
13     <label class="layui-form-label">Cron表达式</label>
14     <div class="layui-input-block" style="width:200px">
15         <input type="text" id="Cron" name="title" onclick="SetCron()" required lay-verify="required" placeholder="点击设置Cron表达式" autocomplete="off" class="layui-input">
16     </div>
17 </div>
18 
19 <fieldset class="layui-elem-field site-demo-button">
20     <legend>任务控制区</legend>
21     <div>
22         <button id="OpenTask" class="layui-btn">开启任务</button>
23         <button id="CloseTask" class="layui-btn layui-btn-danger">关闭任务</button>
24     </div>
25 </fieldset>
26 
27 <script type="text/javascript">
28     function SetCron() {
29         layer.open({
30             type: 2,
31             area: ['870px', '660px'],
32             fixed: false, //不固定
33             maxmin: true,
34             content: '/Quartz/SetCron'
35         });
36        // window.open("/Quartz/SetCron", "", "top=100,left=300,width=870,height=660");
37     }
38 
39     $(document).ready(function () {
40         $("#OpenTask").click(function () {
41             var cron = $("#Cron").val();
42             if (cron === '') {
43                 layer.tips('请设置Cron表达式', '#Cron', {
44                     tips: 3
45                 });
46                 return false;
47             }
48             $.ajax({
49                 url: "CronQuartzs",
50                 type: 'post',
51                 data: { cron: cron },
52                 dataType: "json",
53                 async: "false",
54                 success: function (data) {
55                     if (data.ResultSign === 0) {
56                         layer.alert("开启成功");
57                     } else {
58                         layer.alert("开启失败--" + "错误信息:" + data.Message);
59                     }
60                 }
61             });
62         });
63         $("#CloseTask").click(function () {
64             $.ajax({
65                 url: "CloseTask",
66                 type: 'post',
67                 data: {},
68                 dataType: "json",
69                 async: "false",
70                 success: function (data) {
71                     if (data.ResultSign === 0) {
72                         layer.alert("关闭成功");
73                     } else {
74                         layer.alert("关闭失败--" + "错误信息:" + data.Message);
75                     }
76                 }
77             });
78         });
79     });
80 </script>

View Code
  (6)、在SetCron视图编写如下代码


  1 @{
  2     ViewBag.Title = "设置Cron";
  3     Layout = null;
  4 }
  5 
  6 <!DOCTYPE html>
  7 <html>
  8 <head>
  9     <title>Cron表达式生成器</title>
 10     <link href="~/Content/Cron/easyui.css" rel="stylesheet" type="text/css" />
 11     <link href="~/Content/Cron/icon.css" rel="stylesheet" type="text/css" />
 12     <script src="~/Js/lib/jquery-3.2.1/jquery-3.2.1.min.js"></script>
 13     <script src="~/Content/Cron/jquery.easyui.min.js" type="text/javascript"></script>
 14     <script src="~/Content/Cron/cron.js" type="text/javascript"></script>
 15     <script src="~/Js/lib/layer/layer.js"></script>
 16     <style type="text/css">
 17         .line {
 18             height: 25px;
 19             line-height: 25px;
 20             margin: 3px;
 21         }
 22 
 23         .imp {
 24             padding-left: 25px;
 25         }
 26 
 27         .col {
 28             width: 95px;
 29         }
 30     </style>
 31     @*来源于http://jason.hahuachou.com/cron/index.htm网站,并下载源代码。*@
 32 </head>
 33 <body>
 34 
 35     <center>
 36         <div class="easyui-layout" style="width: 830px; height: 540px; border: 1px rgb(202, 196, 196) solid;
 37                                            border-radius: 5px;">
 38             <div style="height: 100%;">
 39                 <div class="easyui-tabs" data-options="fit:true,border:false">
 40                     <div title="">
 41                         <div class="line">
 42                             <input type="radio" checked="checked" name="second" onclick="everyTime(this)">
 43                             每秒 允许的通配符[, - * /]
 44                         </div>
 45                         <div class="line">
 46                             <input type="radio" name="second" onclick="cycle(this)">
 47                             周期从
 48                             <input class="numberspinner" style="width: 60px;" data-options="min:1,max:58" value="1"
 49                                    id="secondStart_0">
 50                             -
 51                             <input class="numberspinner" style="width: 60px;" data-options="min:2,max:59" value="2"
 52                                    id="secondEnd_0">
 53  54                         </div>
 55                         <div class="line">
 56                             <input type="radio" name="second" onclick="startOn(this)">
 57  58                             <input class="numberspinner" style="width: 60px;" data-options="min:0,max:59" value="0"
 59                                    id="secondStart_1">
 60                             秒开始,每
 61                             <input class="numberspinner" style="width: 60px;" data-options="min:1,max:59" value="1"
 62                                    id="secondEnd_1">
 63                             秒执行一次
 64                         </div>
 65                         <div class="line">
 66                             <input type="radio" name="second" id="sencond_appoint">
 67                             指定每分钟在第几秒执行
 68                         </div>
 69                         <div class="imp secondList">
 70                             <input type="checkbox" value="1">01
 71                             <input type="checkbox" value="2">02
 72                             <input type="checkbox" value="3">03
 73                             <input type="checkbox" value="4">04
 74                             <input type="checkbox" value="5">05
 75                             <input type="checkbox" value="6">06
 76                             <input type="checkbox" value="7">07
 77                             <input type="checkbox" value="8">08
 78                             <input type="checkbox" value="9">09
 79                             <input type="checkbox" value="10">10
 80                         </div>
 81                         <div class="imp secondList">
 82                             <input type="checkbox" value="11">11
 83                             <input type="checkbox" value="12">12
 84                             <input type="checkbox" value="13">13
 85                             <input type="checkbox" value="14">14
 86                             <input type="checkbox" value="15">15
 87                             <input type="checkbox" value="16">16
 88                             <input type="checkbox" value="17">17
 89                             <input type="checkbox" value="18">18
 90                             <input type="checkbox" value="19">19
 91                             <input type="checkbox" value="20">20
 92                         </div>
 93                         <div class="imp secondList">
 94                             <input type="checkbox" value="21">21
 95                             <input type="checkbox" value="22">22
 96                             <input type="checkbox" value="23">23
 97                             <input type="checkbox" value="24">24
 98                             <input type="checkbox" value="25">25
 99                             <input type="checkbox" value="26">26
100                             <input type="checkbox" value="27">27
101                             <input type="checkbox" value="28">28
102                             <input type="checkbox" value="29">29
103                             <input type="checkbox" value="30">30
104                         </div>
105                         <div class="imp secondList">
106                             <input type="checkbox" value="31">31
107                             <input type="checkbox" value="32">32
108                             <input type="checkbox" value="33">33
109                             <input type="checkbox" value="34">34
110                             <input type="checkbox" value="35">35
111                             <input type="checkbox" value="36">36
112                             <input type="checkbox" value="37">37
113                             <input type="checkbox" value="38">38
114                             <input type="checkbox" value="39">39
115                             <input type="checkbox" value="40">40
116                         </div>
117                         <div class="imp secondList">
118                             <input type="checkbox" value="41">41
119                             <input type="checkbox" value="42">42
120                             <input type="checkbox" value="43">43
121                             <input type="checkbox" value="44">44
122                             <input type="checkbox" value="45">45
123                             <input type="checkbox" value="46">46
124                             <input type="checkbox" value="47">47
125                             <input type="checkbox" value="48">48
126                             <input type="checkbox" value="49">49
127                             <input type="checkbox" value="50">50
128                         </div>
129                         <div class="imp secondList">
130                             <input type="checkbox" value="51">51
131                             <input type="checkbox" value="52">52
132                             <input type="checkbox" value="53">53
133                             <input type="checkbox" value="54">54
134                             <input type="checkbox" value="55">55
135                             <input type="checkbox" value="56">56
136                             <input type="checkbox" value="57">57
137                             <input type="checkbox" value="58">58
138                             <input type="checkbox" value="59">59
139                         </div>
140                     </div>
141                     <div title="分钟">
142                         <div class="line">
143                             <input type="radio" checked="checked" name="min" onclick="everyTime(this)">
144                             分钟 允许的通配符[, - * /]
145                         </div>
146                         <div class="line">
147                             <input type="radio" name="min" onclick="cycle(this)">
148                             周期从
149                             <input class="numberspinner" style="width: 60px;" data-options="min:1,max:58" value="1"
150                                    id="minStart_0">
151                             -
152                             <input class="numberspinner" style="width: 60px;" data-options="min:2,max:59" value="2"
153                                    id="minEnd_0">
154                             分钟
155                         </div>
156                         <div class="line">
157                             <input type="radio" name="min" onclick="startOn(this)">
158 159                             <input class="numberspinner" style="width: 60px;" data-options="min:0,max:59" value="0"
160                                    id="minStart_1">
161                             分钟开始,每
162                             <input class="numberspinner" style="width: 60px;" data-options="min:1,max:59" value="1"
163                                    id="minEnd_1">
164                             分钟执行一次
165                         </div>
166                         <div class="line">
167                             <input type="radio" name="min" id="min_appoint">
168                             指定每小时在第几分执行
169                         </div>
170                         <div class="imp minList">
171                             <input type="checkbox" value="1">01
172                             <input type="checkbox" value="2">02
173                             <input type="checkbox" value="3">03
174                             <input type="checkbox" value="4">04
175                             <input type="checkbox" value="5">05
176                             <input type="checkbox" value="6">06
177                             <input type="checkbox" value="7">07
178                             <input type="checkbox" value="8">08
179                             <input type="checkbox" value="9">09
180                             <input type="checkbox" value="10">10
181                         </div>
182                         <div class="imp minList">
183                             <input type="checkbox" value="11">11
184                             <input type="checkbox" value="12">12
185                             <input type="checkbox" value="13">13
186                             <input type="checkbox" value="14">14
187                             <input type="checkbox" value="15">15
188                             <input type="checkbox" value="16">16
189                             <input type="checkbox" value="17">17
190                             <input type="checkbox" value="18">18
191                             <input type="checkbox" value="19">19
192                             <input type="checkbox" value="20">20
193                         </div>
194                         <div class="imp minList">
195                             <input type="checkbox" value="21">21
196                             <input type="checkbox" value="22">22
197                             <input type="checkbox" value="23">23
198                             <input type="checkbox" value="24">24
199                             <input type="checkbox" value="25">25
200                             <input type="checkbox" value="26">26
201                             <input type="checkbox" value="27">27
202                             <input type="checkbox" value="28">28
203                             <input type="checkbox" value="29">29
204                             <input type="checkbox" value="30">30
205                         </div>
206                         <div class="imp minList">
207                             <input type="checkbox" value="31">31
208                             <input type="checkbox" value="32">32
209                             <input type="checkbox" value="33">33
210                             <input type="checkbox" value="34">34
211                             <input type="checkbox" value="35">35
212                             <input type="checkbox" value="36">36
213                             <input type="checkbox" value="37">37
214                             <input type="checkbox" value="38">38
215                             <input type="checkbox" value="39">39
216                             <input type="checkbox" value="40">40
217                         </div>
218                         <div class="imp minList">
219                             <input type="checkbox" value="41">41
220                             <input type="checkbox" value="42">42
221                             <input type="checkbox" value="43">43
222                             <input type="checkbox" value="44">44
223                             <input type="checkbox" value="45">45
224                             <input type="checkbox" value="46">46
225                             <input type="checkbox" value="47">47
226                             <input type="checkbox" value="48">48
227                             <input type="checkbox" value="49">49
228                             <input type="checkbox" value="50">50
229                         </div>
230                         <div class="imp minList">
231                             <input type="checkbox" value="51">51
232                             <input type="checkbox" value="52">52
233                             <input type="checkbox" value="53">53
234                             <input type="checkbox" value="54">54
235                             <input type="checkbox" value="55">55
236                             <input type="checkbox" value="56">56
237                             <input type="checkbox" value="57">57
238                             <input type="checkbox" value="58">58
239                             <input type="checkbox" value="59">59
240                         </div>
241                     </div>
242                     <div title="小时">
243                         <div class="line">
244                             <input type="radio" checked="checked" name="hour" onclick="everyTime(this)">
245                             小时 允许的通配符[, - * /]
246                         </div>
247                         <div class="line">
248                             <input type="radio" name="hour" onclick="cycle(this)">
249                             周期从
250                             <input class="numberspinner" style="width: 60px;" data-options="min:0,max:23" value="0"
251                                    id="hourStart_0">
252                             -
253                             <input class="numberspinner" style="width: 60px;" data-options="min:2,max:23" value="2"
254                                    id="hourEnd_1">
255                             小时
256                         </div>
257                         <div class="line">
258                             <input type="radio" name="hour" onclick="startOn(this)">
259 260                             <input class="numberspinner" style="width: 60px;" data-options="min:0,max:23" value="0"
261                                    id="hourStart_1">
262                             小时开始,每
263                             <input class="numberspinner" style="width: 60px;" data-options="min:1,max:23" value="1"
264                                    id="hourEnd_1">
265                             小时执行一次
266                         </div>
267                         <div class="line">
268                             <input type="radio" name="hour" id="hour_appoint">
269                             指定每天在第几小时执行
270                         </div>
271                         <div class="imp hourList">
272                             AM:
273                             <input type="checkbox" value="0">00
274                             <input type="checkbox" value="1">01
275                             <input type="checkbox" value="2">02
276                             <input type="checkbox" value="3">03
277                             <input type="checkbox" value="4">04
278                             <input type="checkbox" value="5">05
279                             <input type="checkbox" value="6">06
280                             <input type="checkbox" value="7">07
281                             <input type="checkbox" value="8">08
282                             <input type="checkbox" value="9">09
283                             <input type="checkbox" value="10">10
284                             <input type="checkbox" value="11">11
285                         </div>
286                         <div class="imp hourList">
287                             PM:
288                             <input type="checkbox" value="12">12
289                             <input type="checkbox" value="13">13
290                             <input type="checkbox" value="14">14
291                             <input type="checkbox" value="15">15
292                             <input type="checkbox" value="16">16
293                             <input type="checkbox" value="17">17
294                             <input type="checkbox" value="18">18
295                             <input type="checkbox" value="19">19
296                             <input type="checkbox" value="20">20
297                             <input type="checkbox" value="21">21
298                             <input type="checkbox" value="22">22
299                             <input type="checkbox" value="23">23
300                         </div>
301                     </div>
302                     <div title="">
303                         <div class="line">
304                             <input type="radio" checked="checked" name="day" onclick="everyTime(this)">
305                             日 允许的通配符[, - * / L W]
306                         </div>
307                         <div class="line">
308                             <input type="radio" name="day" onclick="unAppoint(this)">
309                             不指定
310                         </div>
311                         <div class="line">
312                             <input type="radio" name="day" onclick="cycle(this)">
313                             周期从
314                             <input class="numberspinner" style="width: 60px;" data-options="min:1,max:31" value="1"
315                                    id="dayStart_0">
316                             -
317                             <input class="numberspinner" style="width: 60px;" data-options="min:2,max:31" value="2"
318                                    id="dayEnd_0">
319 320                         </div>
321                         <div class="line">
322                             <input type="radio" name="day" onclick="startOn(this)">
323 324                             <input class="numberspinner" style="width: 60px;" data-options="min:1,max:31" value="1"
325                                    id="dayStart_1">
326                             日开始,每
327                             <input class="numberspinner" style="width: 60px;" data-options="min:1,max:31" value="1"
328                                    id="dayEnd_1">
329                             天执行一次
330                         </div>
331                         <div class="line">
332                             <input type="radio" name="day" onclick="workDay(this)">
333                             每月
334                             <input class="numberspinner" style="width: 60px;" data-options="min:1,max:31" value="1"
335                                    id="dayStart_2">
336                             号最近的那个工作日
337                         </div>
338                         <div class="line">
339                             <input type="radio" name="day" onclick="lastDay(this)">
340                             本月最后一天
341                         </div>
342                         <div class="line">
343                             <input type="radio" name="day" id="day_appoint">
344                             指定每月在第几日执行
345                         </div>
346                         <div class="imp dayList">
347                             <input type="checkbox" value="1">1
348                             <input type="checkbox" value="2">2
349                             <input type="checkbox" value="3">3
350                             <input type="checkbox" value="4">4
351                             <input type="checkbox" value="5">5
352                             <input type="checkbox" value="6">6
353                             <input type="checkbox" value="7">7
354                             <input type="checkbox" value="8">8
355                             <input type="checkbox" value="9">9
356                             <input type="checkbox" value="10">10
357                             <input type="checkbox" value="11">11
358                             <input type="checkbox" value="12">12
359                             <input type="checkbox" value="13">13
360                             <input type="checkbox" value="14">14
361                             <input type="checkbox" value="15">15
362                             <input type="checkbox" value="16">16
363                         </div>
364                         <div class="imp dayList">
365                             <input type="checkbox" value="17">17
366                             <input type="checkbox" value="18">18
367                             <input type="checkbox" value="19">19
368                             <input type="checkbox" value="20">20
369                             <input type="checkbox" value="21">21
370                             <input type="checkbox" value="22">22
371                             <input type="checkbox" value="23">23
372                             <input type="checkbox" value="24">24
373                             <input type="checkbox" value="25">25
374                             <input type="checkbox" value="26">26
375                             <input type="checkbox" value="27">27
376                             <input type="checkbox" value="28">28
377                             <input type="checkbox" value="29">29
378                             <input type="checkbox" value="30">30
379                             <input type="checkbox" value="31">31
380                         </div>
381                     </div>
382                     <div title="">
383                         <div class="line">
384                             <input type="radio" checked="checked" name="mouth" onclick="everyTime(this)">
385                             月 允许的通配符[, - * /]
386                         </div>
387                         <div class="line">
388                             <input type="radio" name="mouth" onclick="unAppoint(this)">
389                             不指定
390                         </div>
391                         <div class="line">
392                             <input type="radio" name="mouth" onclick="cycle(this)">
393                             周期从
394                             <input class="numberspinner" style="width: 60px;" data-options="min:1,max:12" value="1"
395                                    id="mouthStart_0">
396                             -
397                             <input class="numberspinner" style="width: 60px;" data-options="min:2,max:12" value="2"
398                                    id="mouthEnd_0">
399 400                         </div>
401                         <div class="line">
402                             <input type="radio" name="mouth" onclick="startOn(this)">
403 404                             <input class="numberspinner" style="width: 60px;" data-options="min:1,max:12" value="1"
405                                    id="mouthStart_1">
406                             日开始,每
407                             <input class="numberspinner" style="width: 60px;" data-options="min:1,max:12" value="1"
408                                    id="mouthEnd_1">
409                             月执行一次
410                         </div>
411                         <div class="line">
412                             <input type="radio" name="mouth" id="mouth_appoint">
413                             指定每年在第几月执行
414                         </div>
415                         <div class="imp mouthList">
416                             <input type="checkbox" value="1">1
417                             <input type="checkbox" value="2">2
418                             <input type="checkbox" value="3">3
419                             <input type="checkbox" value="4">4
420                             <input type="checkbox" value="5">5
421                             <input type="checkbox" value="6">6
422                             <input type="checkbox" value="7">7
423                             <input type="checkbox" value="8">8
424                             <input type="checkbox" value="9">9
425                             <input type="checkbox" value="10">10
426                             <input type="checkbox" value="11">11
427                             <input type="checkbox" value="12">12
428                         </div>
429                     </div>
430                     <div title="">
431                         <div class="line">
432                             <input type="radio" checked="checked" name="week" onclick="everyTime(this)">
433                             周 允许的通配符[, - * / L #]
434                         </div>
435                         <div class="line">
436                             <input type="radio" name="week" onclick="unAppoint(this)">
437                             不指定
438                         </div>
439                         <div class="line">
440                             <input type="radio" name="week" onclick="startOn(this)">
441                             周期 从星期<input class="numberspinner" style="width: 60px;" data-options="min:1,max:7"
442                                          id="weekStart_0" value="1">
443                             -
444                             <input class="numberspinner" style="width: 60px;" data-options="min:2,max:7" value="2"
445                                    id="weekEnd_0">
446                         </div>
447                         <div class="line">
448                             <input type="radio" name="week" onclick="weekOfDay(this)">
449                             第<input class="numberspinner" style="width: 60px;" data-options="min:1,max:4" value="1"
450                                     id="weekStart_1">
451                             周 的星期<input class="numberspinner" style="width: 60px;" data-options="min:1,max:7"
452                                         id="weekEnd_1" value="1">
453                         </div>
454                         <div class="line">
455                             <input type="radio" name="week" onclick="lastWeek(this)">
456                             本月最后一个星期<input class="numberspinner" style="width: 60px;" data-options="min:1,max:7"
457                                            id="weekStart_2" value="1">
458                         </div>
459                         <div class="line">
460                             <input type="radio" name="week" id="week_appoint">
461                             指定在周几执行
462                         </div>
463                         <div class="imp weekList">
464                             <input type="checkbox" value="1">1
465                             <input type="checkbox" value="2">2
466                             <input type="checkbox" value="3">3
467                             <input type="checkbox" value="4">4
468                             <input type="checkbox" value="5">5
469                             <input type="checkbox" value="6">6
470                             <input type="checkbox" value="7">7
471                         </div>
472                     </div>
473                     <div title="">
474                         <div class="line">
475                             <input type="radio" checked="checked" name="year" onclick="unAppoint(this)">
476                             不指定 允许的通配符[, - * /] 非必填
477                         </div>
478                         <div class="line">
479                             <input type="radio" name="year" onclick="everyTime(this)">
480                             每年
481                         </div>
482                         <div class="line">
483                             <input type="radio" name="year" onclick="cycle(this)">周期 从
484                             <input class="numberspinner" style="width: 90px;" data-options="min:2013,max:3000"
485                                    id="yearStart_0" value="2013">
486                             -
487                             <input class="numberspinner" style="width: 90px;" data-options="min:2014,max:3000"
488                                    id="yearEnd_0" value="2014">
489                         </div>
490                     </div>
491                 </div>
492             </div>
493             <div data-options="region:'south',border:false" style="height: 230px">
494                 <fieldset style="border-radius: 3px; height: 116px;">
495                     <legend>表达式</legend>
496                     <table style="height: 100px;">
497                         <tbody>
498                             <tr>
499                                 <td></td>
500                                 <td align="center">
501 502                                 </td>
503                                 <td align="center">
504                                     分钟
505                                 </td>
506                                 <td align="center">
507                                     小时
508                                 </td>
509                                 <td align="center">
510 511                                 </td>
512                                 <td align="center">
513                                     月<br />
514                                 </td>
515                                 <td align="center">
516                                     星期
517                                 </td>
518                                 <td align="center">
519 520                                 </td>
521                             </tr>
522                             <tr>
523                                 <td>
524                                     表达式字段:
525                                 </td>
526                                 <td>
527                                     <input type="text" name="v_second" class="col" value="*" readonly="readonly" />
528                                 </td>
529                                 <td>
530                                     <input type="text" name="v_min" class="col" value="*" readonly="readonly" />
531                                 </td>
532                                 <td>
533                                     <input type="text" name="v_hour" class="col" value="*" readonly="readonly" />
534                                 </td>
535                                 <td>
536                                     <input type="text" name="v_day" class="col" value="*" readonly="readonly" />
537                                 </td>
538                                 <td>
539                                     <input type="text" name="v_mouth" class="col" value="*" readonly="readonly" />
540                                 </td>
541                                 <td>
542                                     <input type="text" name="v_week" class="col" value="?" readonly="readonly" />
543                                 </td>
544                                 <td>
545                                     <input type="text" name="v_year" class="col" readonly="readonly" />
546                                 </td>
547                             </tr>
548                             <tr>
549                                 <td>Cron 表达式:</td>
550                                 <td colspan="6">
551                                     <input type="text" name="cron" style="width: 100%;" value="* * * * * ?" id="cron" />
552                                 </td>
553                                 <td><input type="button" value="反解析到UI " id="bt" onclick="btnFan()" /></td>
554                             </tr>
555                         </tbody>
556                     </table>
557                 </fieldset>
558                 <div style="text-align: center; margin-top: 5px;">
559                     <script type="text/javascript">
560                         /*killIe*/
561                         $.parser.parse($("body"));
562                         var cpro_id = "u1331261";
563                         var id = getQueryString("id");
564                         function btnFan() {
565                             //获取参数中表达式的值
566                             var txt = $("#cron").val();
567                             if (txt) {
568                                 var regs = txt.split(' ');
569                                 $("input[name=v_second]").val(regs[0]);
570                                 $("input[name=v_min]").val(regs[1]);
571                                 $("input[name=v_hour]").val(regs[2]);
572                                 $("input[name=v_day]").val(regs[3]);
573                                 $("input[name=v_mouth]").val(regs[4]);
574                                 $("input[name=v_week]").val(regs[5]);
575 
576                                 initObj(regs[0], "second");
577                                 initObj(regs[1], "min");
578                                 initObj(regs[2], "hour");
579                                 initDay(regs[3]);
580                                 initMonth(regs[4]);
581                                 initWeek(regs[5]);
582 
583                                 if (regs.length > 6) {
584                                     $("input[name=v_year]").val(regs[6]);
585                                     initYear(regs[6]);
586                                 }
587                             }
588                             // 使用layer把子窗口的值传给父窗口
589                             var index = parent.layer.getFrameIndex(window.name);  // 得到索引
590                             parent.$('#Cron').val(txt);
591                             parent.layer.close(index);
592                         }
593 
594 
595                         function initObj(strVal, strid) {
596                             var ary = null;
597                             var objRadio = $("input[name='" + strid + "'");
598                             if (strVal == "*") {
599                                 objRadio.eq(0).attr("checked", "checked");
600                             } else if (strVal.split('-').length > 1) {
601                                 ary = strVal.split('-');
602                                 objRadio.eq(1).attr("checked", "checked");
603                                 $("#" + strid + "Start_0").numberspinner('setValue', ary[0]);
604                                 $("#" + strid + "End_0").numberspinner('setValue', ary[1]);
605                             } else if (strVal.split('/').length > 1) {
606                                 ary = strVal.split('/');
607                                 objRadio.eq(2).attr("checked", "checked");
608                                 $("#" + strid + "Start_1").numberspinner('setValue', ary[0]);
609                                 $("#" + strid + "End_1").numberspinner('setValue', ary[1]);
610                             } else {
611                                 objRadio.eq(3).attr("checked", "checked");
612                                 if (strVal != "?") {
613                                     ary = strVal.split(",");
614                                     for (var i = 0; i < ary.length; i++) {
615                                         $("." + strid + "List input[value='" + ary[i] + "']").attr("checked", "checked");
616                                     }
617                                 }
618                             }
619                         }
620 
621                         function initDay(strVal) {
622                             var ary = null;
623                             var objRadio = $("input[name='day'");
624                             if (strVal == "*") {
625                                 objRadio.eq(0).attr("checked", "checked");
626                             } else if (strVal == "?") {
627                                 objRadio.eq(1).attr("checked", "checked");
628                             } else if (strVal.split('-').length > 1) {
629                                 ary = strVal.split('-');
630                                 objRadio.eq(2).attr("checked", "checked");
631                                 $("#dayStart_0").numberspinner('setValue', ary[0]);
632                                 $("#dayEnd_0").numberspinner('setValue', ary[1]);
633                             } else if (strVal.split('/').length > 1) {
634                                 ary = strVal.split('/');
635                                 objRadio.eq(3).attr("checked", "checked");
636                                 $("#dayStart_1").numberspinner('setValue', ary[0]);
637                                 $("#dayEnd_1").numberspinner('setValue', ary[1]);
638                             } else if (strVal.split('W').length > 1) {
639                                 ary = strVal.split('W');
640                                 objRadio.eq(4).attr("checked", "checked");
641                                 $("#dayStart_2").numberspinner('setValue', ary[0]);
642                             } else if (strVal == "L") {
643                                 objRadio.eq(5).attr("checked", "checked");
644                             } else {
645                                 objRadio.eq(6).attr("checked", "checked");
646                                 ary = strVal.split(",");
647                                 for (var i = 0; i < ary.length; i++) {
648                                     $(".dayList input[value='" + ary[i] + "']").attr("checked", "checked");
649                                 }
650                             }
651                         }
652 
653                         function initMonth(strVal) {
654                             var ary = null;
655                             var objRadio = $("input[name='mouth'");
656                             if (strVal == "*") {
657                                 objRadio.eq(0).attr("checked", "checked");
658                             } else if (strVal == "?") {
659                                 objRadio.eq(1).attr("checked", "checked");
660                             } else if (strVal.split('-').length > 1) {
661                                 ary = strVal.split('-');
662                                 objRadio.eq(2).attr("checked", "checked");
663                                 $("#mouthStart_0").numberspinner('setValue', ary[0]);
664                                 $("#mouthEnd_0").numberspinner('setValue', ary[1]);
665                             } else if (strVal.split('/').length > 1) {
666                                 ary = strVal.split('/');
667                                 objRadio.eq(3).attr("checked", "checked");
668                                 $("#mouthStart_1").numberspinner('setValue', ary[0]);
669                                 $("#mouthEnd_1").numberspinner('setValue', ary[1]);
670 
671                             } else {
672                                 objRadio.eq(4).attr("checked", "checked");
673 
674                                 ary = strVal.split(",");
675                                 for (var i = 0; i < ary.length; i++) {
676                                     $(".mouthList input[value='" + ary[i] + "']").attr("checked", "checked");
677                                 }
678                             }
679                         }
680 
681                         function initWeek(strVal) {
682                             var ary = null;
683                             var objRadio = $("input[name='week'");
684                             if (strVal == "*") {
685                                 objRadio.eq(0).attr("checked", "checked");
686                             } else if (strVal == "?") {
687                                 objRadio.eq(1).attr("checked", "checked");
688                             } else if (strVal.split('/').length > 1) {
689                                 ary = strVal.split('/');
690                                 objRadio.eq(2).attr("checked", "checked");
691                                 $("#weekStart_0").numberspinner('setValue', ary[0]);
692                                 $("#weekEnd_0").numberspinner('setValue', ary[1]);
693                             } else if (strVal.split('-').length > 1) {
694                                 ary = strVal.split('-');
695                                 objRadio.eq(3).attr("checked", "checked");
696                                 $("#weekStart_1").numberspinner('setValue', ary[0]);
697                                 $("#weekEnd_1").numberspinner('setValue', ary[1]);
698                             } else if (strVal.split('L').length > 1) {
699                                 ary = strVal.split('L');
700                                 objRadio.eq(4).attr("checked", "checked");
701                                 $("#weekStart_2").numberspinner('setValue', ary[0]);
702                             } else {
703                                 objRadio.eq(5).attr("checked", "checked");
704                                 ary = strVal.split(",");
705                                 for (var i = 0; i < ary.length; i++) {
706                                     $(".weekList input[value='" + ary[i] + "']").attr("checked", "checked");
707                                 }
708                             }
709                         }
710 
711                         function initYear(strVal) {
712                             var ary = null;
713                             var objRadio = $("input[name='year'");
714                             if (strVal == "*") {
715                                 objRadio.eq(1).attr("checked", "checked");
716                             } else if (strVal.split('-').length > 1) {
717                                 ary = strVal.split('-');
718                                 objRadio.eq(2).attr("checked", "checked");
719                                 $("#yearStart_0").numberspinner('setValue', ary[0]);
720                                 $("#yearEnd_0").numberspinner('setValue', ary[1]);
721                             }
722                         }
723 
724                     </script>
725 
726                     <div>
727                     </div>
728                 </div>
729             </div>
730             <div>
731             </div>
732         </div>
733     </center>
734 </body>
735 </html>

View Code
  (7)、_Layout视图是我们的模板页代码如下   注:路径看CronUse页面


 1 <!DOCTYPE html>
 2 
 3 <html>
 4 
 5 <head>
 6     <meta charset="utf-8">
 7     <title>后台管理模板</title>
 8     <meta name="renderer" content="webkit">
 9     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
10     <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
11     <meta name="apple-mobile-web-app-status-bar-style" content="black">
12     <meta name="apple-mobile-web-app-capable" content="yes">
13     <meta name="format-detection" content="telephone=no">
14 </head>
15 
16 <body>
17 @RenderBody()
18 </body>
19 
20 </html>

View Code
  (8)、视图搭建好之后、我们在写后端实现quartz控制器  代码如下


 1  /// <summary>
 2         /// 设置Cron时间开启方法
 3         /// </summary>
 4         /// <param name="cron"></param>
 5         /// <returns></returns>
 6         public JsonResult CronQuartzs(string cron)
 7         {
 8             OperateStatus statu = new OperateStatus();
 9             try
10             {
11                 LogTool.DetailLogRecord("CronLog", LogTool.FolderCreationType.None, "创建调度器成功", false);
12                 _sched.Start();
13                 IJobDetail job = JobBuilder.Create<CronJob>()
14                         .WithIdentity("Cron作业名称", "Cron作业分组")
15                         .Build();
16                 // 触发作业
17                 ITrigger trigger = TriggerBuilder.Create()
18 
19                 #region 使用cron 规则
20 
21                     .WithIdentity("Cron触发器名称", "Cron触发器分组")
22                     .WithCronSchedule(cron) // 你设置的执行时间
23                     .StartAt(DateTime.UtcNow)
24                     .WithPriority(1)
25                     .Build();
26                 #endregion
27 
28                 // 将作业和触发器添加到调度器
29                 _sched.ScheduleJob(job, trigger);
30                 statu.Message = "开启成功";
31                 statu.ResultSign = ResultSign.Successful;
32                 //return Json(statu);
33             }
34             catch (Exception ex)
35             {
36                 statu.Message = ex.Message;
37                 statu.ResultSign = ResultSign.Error;
38 
39             }
40             return Json(statu);
41         }
42 
43         /// <summary>
44         /// 关闭任务
45         /// </summary>
46         public JsonResult CloseTask()
47         {
48             OperateStatus statu = new OperateStatus();
49             try
50             {
51                 _sched.Shutdown();
52                 statu.Message = "关闭成功";
53                 statu.ResultSign = ResultSign.Successful;
54             }
55             catch (Exception ex)
56             {
57                 statu.Message = ex.Message;
58                 statu.ResultSign = ResultSign.Error;
59             }
60             return Json(statu);
61         }

View Code
  (9)、后端的实现是和前一篇博客相差不大的,但有2点不同是我们重新建立了一个作业类(CronJob)   CronJob存放路径在Job文件夹下和OperateStatus消息提示类 OperateStatus存放路径Tool->Message文件夹下  代码如下
  CronJob类


 1  public class CronJob:IJob
 2     {
 3 
 4         /// <summary>
 5         /// 作业默认实现接口
 6         /// </summary>
 7         /// <param name="context"></param>
 8         public void Execute(IJobExecutionContext context)
 9         {
10             LogTool.DetailLogRecord("CronLog", LogTool.FolderCreationType.None, "我的Cron表达式任务", false);
11         }
12     }

View Code
  OperateStatus 类


 1  /// <summary>
 2     ///  调用服务或业务逻辑的返回标识枚举,使用DataContract特性,表示可序列化
 3     /// </summary>
 4     public enum ResultSign
 5     {
 6         /// <summary>
 7         ///     操作成功
 8         /// </summary>
 9         Successful = 0,
10 
11         /// <summary>
12         ///     警告
13         /// </summary>
14         Warning = 1,
15 
16         /// <summary>
17         ///     操作引发错误
18         /// </summary>
19         Error = 2
20     }
21 
22     /// <summary>
23     ///     调用调用服务或业务逻辑的操作状态,使用DataContract特性,表示可序列化
24     /// </summary>
25     public  class OperateStatus
26     {
27         #region 构造函数
28 
29         /// <summary>
30         ///     构造函数:默认为失败
31         /// </summary>
32         public OperateStatus()
33         {
34             ResultSign = ResultSign.Error;
35             Message = "失败";
36         }
37 
38         public OperateStatus(OperateStatus status)
39         {
40             ResultSign = status.ResultSign;
41             Message = status.Message;
42             FormatParams = status.FormatParams;
43         }
44 
45         #endregion
46 
47         #region 属性
48 
49         /// <summary>
50         ///     返回标记
51         /// </summary>
52         public ResultSign ResultSign { get; set; }
53 
54         /// <summary>
55         ///     消息字符串(有多语言后将删除该属性)
56         /// </summary>
57         public string Message { get; set; }
58 
59         /// <summary>
60         ///     消息的参数
61         /// </summary>
62         public List<string> FormatParams { get; set; }
63         #endregion
64     }
65 
66     /// <summary>
67     /// 返回结果带实体信息
68     /// </summary>
69     /// <typeparam name="T">实体信息</typeparam>
70     public class OperateStatus<T> : OperateStatus
71     {
72         public T Data { get; set; }
73     }

View Code
  (10)、恩、写了这么多终于结束了,下面我们就来看看我们的成果吧
  运行项目我们看到如下界面
  

  点击quartz.net 入门->Cron表达式的运用 会看到如下图界面
  

  根据提示我们点击文本框弹出如下界面
  

  点击反解析到UI,我们设置的Cron表达式就出现在我们文本框里啦  如图
  

  到这里我们就把cron表达式设置成功 ,然后点击开启任务,我们打开本地磁盘E 找到QuartzLog\CronLog 我们会看到有一个日志文件并打开 日志如下
  

  可以看到。日志里是我们设置的每分钟的第5秒执行一次的结果
三、源码及说明
  1、大家可以看出 这篇博客我们加入了前端框架,但是并没有做过多介绍,如果大家是按照我这个步骤来实现,多多少少都会出现些问题。如果需要源码请到我第一篇博客里找到地址,进行下载
    地址 http://www.cnblogs.com/cyzf/p/6877916.html
  2、前端框架的加入,导致这篇博客写的有点繁琐,望大家理解,但是这是我以后编写quartz所必经的阶段
  3、下一篇博客我将引入数据库,敬请期待
  4、如果喜欢我的文章请点关注和推荐O(∩_∩)O~~  无比感谢,有问题留言哦 
上一篇文章      下一篇文章      查看所有文章
加:2017-05-30 07:34:44  更:2017-05-30 07:35:21 
 
  C# 最新文章
字符串阵列分别输出元素的索引,原值和长度
格式化你的字符串
C#宣告一个变量
C#中级
拆分一个字符串并把每个字符单独输出
通过手机号定位归属地
C# DBNULL与NULL之间的区别【转】
Xamarin
List,DataTable实现行转列的通用方案
C# 语音识别
技术频道: 站长资讯 .NET新手区 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA Visual Studio ASP.NET MVC .NET控件开发 Entity Framework WinRT/Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动设计 Html/Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP Oracle ERP Dynamics CRM K2 BPM 信息安全 企业信息化其他 Android开发 iOS开发 Windows Phone Windows Mobile 其他手机开发 敏捷开发 项目与团队管理 软件工程其他 SQL Server Oracle MySQL NoSQL 其它数据库 Windows 7 Windows Server Linux
脚本语言: vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题 autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程
网站开发: CSS/HTML/Xhtml html5 CSS XML/XSLT Dreamweaver教程 经验交流 开发者乐园 Android开发资料
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 新闻资讯 小游戏 Chinese Culture 股票 三丰软件 开发 中国文化 网文精选 阅读网 看图 日历 万年历 2018年12日历
2018-12-17 16:34:47
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT知识库