Quartz在.Net网站中的使用方法(附Demo)
现在做一个B/S项目需要用到计划任务,本来想自定写一个的,写了几句,突然想看看网上有没有现成可以用的.
结果在苦寻之下找到了Quartz这个组件.看过之后感觉还不错.决定用它实现计划任务了.
再找找看有没有现成的任务.但找了大半天.大多数都是C/S结构中用的.
于是就把自已的写的Demo放到网上,供大家参考一下,如有不正确之 处,还请大家多多指教!
第一步:
引用三个dll文件:Nullables.dll,Quartz.dll,Common.Logging.dll
没有引用Common.Logging.dll出出错.也没多看,大家可以看一下为什么!
第二步:
配置Web.Config文件
- <configSections>
- <section name="quartz" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089" />
- <sectionGroup name="common">
- <section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
- </sectionGroup>
- </configSections>
- <common>
- <logging>
- <factoryAdapter type="Common.Logging.Simple.ConsoleOutLoggerFactoryAdapter, Common.Logging">
- <arg key="showLogName" value="true" />
- <arg key="showDataTime" value="true" />
- <arg key="level" value="DEBUG" />
- <arg key="dateTimeFormat" value="HH:mm:ss:fff" />
- </factoryAdapter>
- </logging>
- </common>
- <quartz>
- <add key="quartz.scheduler.instanceName" value="ExampleDefaultQuartzScheduler" />
- <add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz" />
- <add key="quartz.threadPool.threadCount" value="10" />
- <add key="quartz.threadPool.threadPriority" value="2" />
- <add key="quartz.jobStore.misfireThreshold" value="60000" />
- <add key="quartz.jobStore.type" value="Quartz.Simpl.RAMJobStore, Quartz" />
- </quartz>
第三步:
在页面上新建两个按钮:
第一个按钮执行简单的计划任务
如:几秒钟执行几次
第一个按钮执行复杂的计划任务
如:每天的夜间2:00执行一次,这种复杂的任务
在简单按钮单击事件,代码如下:
- ISchedulerFactory sf = new StdSchedulerFactory();
- IScheduler sched = sf.GetScheduler();
- JobDetail job = new JobDetail("job2", "group2", typeof(JobExecute_2));
- SimpleTrigger trigger = new SimpleTrigger("trigger2", "group2");//不同的计划任务,trigger名称不可以相同!
- trigger.StartTime = DateTime.Now.AddSeconds(5);
- trigger.RepeatInterval = 5000;
- trigger.RepeatCount = 1000;
- DateTime ft = sched.ScheduleJob(job, trigger);
- sched.Start();
JobExecute_2这个类就是要执行的具体任务,必继继承Ijob这个接口
代码:
- public class JobExecute_2:IJob
- {
- #region IJob 成员
- private static int n = 0;
- public void Execute(JobExecutionContext context)
- {
- ILog log = LogManager.GetLogger(typeof(JobExecute_2));
- StreamWriter w = null;
- try
- {
- n++;
- w = new StreamWriter("D:\\2.txt", true, System.Text.Encoding.UTF8);
- w.WriteLine("------------------------------------");
- w.WriteLine(n+" JobExecute_1正执行:时间:" + DateTime.Now);
- w.WriteLine("------------------------------------");
- }
- finally
- {
- if (w != null)
- {
- w.Close();
- w.Dispose();
- }
- }
- }
- #endregion
- }
复杂任务计划如下:
按钮单击事件:
- ISchedulerFactory sf = new StdSchedulerFactory();
- IScheduler sched = sf.GetScheduler();
- JobDetail job = new JobDetail("job1", "group1", typeof(JobExecute_1));
- CronTrigger trigger = new CronTrigger("trigger1", "group1", "job1", "group1");
- //二十秒执行一次
- trigger.CronExpressionString = "0/20 * * * * ?";
- sched.AddJob(job, true);
- DateTime ft = sched.ScheduleJob(trigger);
- sched.Start();
- JobExecute_1类具体代码:
- <pre name="code" class="csharp"> private static int i = 0;
- public void Execute(JobExecutionContext context)
- {
- StreamWriter w = null;
- try
- {
- i++;
- w = new StreamWriter("D:\\1.txt", true, System.Text.Encoding.UTF8);
- w.WriteLine("------------------------------------");
- w.WriteLine(i+" JobExecute_1正执行:时间:" + DateTime.Now);
- w.WriteLine("------------------------------------");
- }
- finally
- {
- w.Close();
- w.Dispose();
- }
- }</pre><br>
- <br>
- <p></p>
- <pre></pre>
- <br>
- 好了.到这里就大功告成了!
- <p></p>
- <p>可以运行一下试试啊!这样会定时在D盘根目录下1.txt和2.txt文件中写下日 志了!快快试试吧!</p>
- <p><a target="_blank" href="http://download.csdn.net/detail/wanzhuan2010/3597292">源码下载</a><br>
- </p>
- <p>还有一些具本的使用方法及介绍可以参考:</p>
- <p><a target="_blank" href="http://www.cnblogs.com/shanyou/archive/2007/09/04/881935.html">http://www.cnblogs.com/shanyou/archive/2007/09/04/881935.html<br>
- </a></p>
- <p><br>
- </p>
- <br>
Quartz在.Net网站中的使用方法(附Demo)的更多相关文章
- vagrant网站中box下载方法
假设需要下载Laravel/homestead这个包. 首先定位到地址:https://app.vagrantup.com/laravel/boxes/homestead/versions/8.0.0 ...
- 关于linux asp.net MVC网站中 httpHandlers配置无效的处理方法
近期有Jexus用户反映,在Linux ASP.NET MVC网站的Web.config中添加 httpHandlers 配置用于处理自定义类型,但是在运行中并没有产生预期的效果,服务器返回了404( ...
- ASP.NET网站中获取当前虚拟目录的应用程序目录的方法(转)
[原创]ASP.NET网站中获取当前虚拟目录的应用程序目录的方法 ASP.NET网站中获取当前虚拟目录的应用程序目录的方法1.问题描述:有时候,某个网页控件会被不同目录下文件使用,此时如果该控件中有一 ...
- 【前端】向blog或网站中添加语法高亮显示代码方法总结
向blog或网站中添加语法高亮显示的代码方法总结 文章目录 预备知识 目标 第一类方法:嵌入 第二类方法:外部引用 第三类方法:忽略HTML和PHP 最近在写代码时遇到一个问题,就是如何让代码像在ID ...
- 【转载】ASP.NET中Server.MapPath方法获取网站根目录总结
在ASP.NET网站应用程序中,可以通过Server.MapPath方法来获取跟服务器有关的目录信息,如获取网站的根目录.获取当前代码文件所在的目录路径.获取当前代码所在路径的上级路径等.Server ...
- 利用自定义动画 animate() 方法,实现某图书网站中“近 7 日畅销榜”中的图书无缝垂直向上滚动特效:当光标移入到图书上时,停止滚动,鼠标移开时,继续滚动
查看本章节 查看作业目录 需求说明: 利用自定义动画 animate() 方法,实现某图书网站中"近 7 日畅销榜"中的图书无缝垂直向上滚动特效:当光标移入到图书上时,停止滚动,鼠 ...
- PHP获取网站中文章的第一张图片作为缩略图的方法
调取文章中的第一张图作为列表页缩略图是很流行的做法,WordPress中一般主题默认也是如此,那我们接下来就一起来看看PHP获取网站中各文章的第一张图片的代码示例 $temp=mt_rand(1,4) ...
- 针对Linux ASP.NET MVC网站中 httpHandlers配置无效的解决方案
近期有Linux ASP.NET用户反映,在MVC网站的Web.config中添加 httpHandlers 配置用于处理自定义类型,但是在运行中并没有产生预期的效果,服务器返回了404(找不到网页) ...
- [译]MVC网站教程(四):MVC4网站中集成jqGrid表格插件(系列完结)
目录 1. 介绍 2. 软件环境 3. 在运行示例代码之前(源代码 + 示例登陆帐号) 4. jqGrid和AJAX 5. GridSettings 6. ...
随机推荐
- Xamarin.Forms android实现沉浸式
在android项目里,这样设置 using System; using Android.App; using Android.Content.PM; using Android.Runtime; u ...
- vuex与redux,我们都一样
vuex与redux的主要区别: redux:生成的全局数据流是通过每个组件的props逐层传递到各个子组件的,通过@connect装饰器绑定在this.props上面. vuex :生成的全局数据则 ...
- numpy.random模块常用函数解析
numpy.random模块中常用函数解析 numpy.random模块官方文档 1. numpy.random.rand(d0, d1, ..., dn)Create an array of the ...
- linux内核开发程序风格
变量命名法 这里是linux不是windows,所以匈牙利命名法是不允许使用的,在内核中,局部变量只要可以明确表达自己的意思,可以使用idx,i这种名字的id, 全局函数和变量需要有表达性的名字例如g ...
- const int * 和 int * const 傻傻分不清楚
const int * a和int const *a一样,定义时不是必须初始化,指针可以指向其他变量,但是指向的变量的值不能修改. int * const定义时必须初始化,即必须指明指向哪个变量,定义 ...
- cookie & cookies
cookie & cookies "use strict"; /** * * @author xgqfrms * @license MIT * @copyright xgq ...
- [luoguP2038] 无线网络发射器选址(模拟)
传送门 又是个模拟水题,考虑边界就好,连long long都不用开. ——代码 #include <cstdio> #include <iostream> int n, d, ...
- Linux服务管理(Ubuntu服务管理工具sysv-rc-conf)(转)
Linux运行级别 Linux系统任何时候都运行在一个指定的运行级上,并且不同的运行级的程序和服务都不同,所要完成的工作和要达到的目的都不同,系统可以在这些运行级之间进行切换,以完成不同的工作. 运行 ...
- 1.3-动态路由协议EIGRP②
LAB3:Wildcard Mask in EIGRP (通过反掩码,控制运行EIGRP的接口的范围 作用:控制有哪些接口在运行EIGRP) ~~~~~~~~~~~~~~~~~ ...
- android (13) Fragment使用下
一.Fragment使用: 要在你的activity中管理Fragment,须要使用FragmentManager,能够通过getFragmentManager(),这里注意要是在v4包要用getSu ...