现在做一个B/S项目需要用到计划任务,本来想自定写一个的,写了几句,突然想看看网上有没有现成可以用的.
结果在苦寻之下找到了Quartz这个组件.看过之后感觉还不错.决定用它实现计划任务了.
再找找看有没有现成的任务.但找了大半天.大多数都是C/S结构中用的.

于是就把自已的写的Demo放到网上,供大家参考一下,如有不正确之 处,还请大家多多指教!

第一步:
引用三个dll文件:Nullables.dll,Quartz.dll,Common.Logging.dll
没有引用Common.Logging.dll出出错.也没多看,大家可以看一下为什么!

第二步:

配置Web.Config文件

  1. <configSections>
  2. <section name="quartz" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089" />
  3. <sectionGroup name="common">
  4. <section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
  5. </sectionGroup>
  6. </configSections>
  7. <common>
  8. <logging>
  9. <factoryAdapter type="Common.Logging.Simple.ConsoleOutLoggerFactoryAdapter, Common.Logging">
  10. <arg key="showLogName" value="true" />
  11. <arg key="showDataTime" value="true" />
  12. <arg key="level" value="DEBUG" />
  13. <arg key="dateTimeFormat" value="HH:mm:ss:fff" />
  14. </factoryAdapter>
  15. </logging>
  16. </common>
  17. <quartz>
  18. <add key="quartz.scheduler.instanceName" value="ExampleDefaultQuartzScheduler" />
  19. <add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz" />
  20. <add key="quartz.threadPool.threadCount" value="10" />
  21. <add key="quartz.threadPool.threadPriority" value="2" />
  22. <add key="quartz.jobStore.misfireThreshold" value="60000" />
  23. <add key="quartz.jobStore.type" value="Quartz.Simpl.RAMJobStore, Quartz" />
  24. </quartz>

第三步:
在页面上新建两个按钮:

第一个按钮执行简单的计划任务
如:几秒钟执行几次

第一个按钮执行复杂的计划任务
如:每天的夜间2:00执行一次,这种复杂的任务

在简单按钮单击事件,代码如下:

  1. ISchedulerFactory sf = new StdSchedulerFactory();
  2. IScheduler sched = sf.GetScheduler();
  3. JobDetail job = new JobDetail("job2", "group2", typeof(JobExecute_2));
  4. SimpleTrigger trigger = new SimpleTrigger("trigger2", "group2");//不同的计划任务,trigger名称不可以相同!
  5. trigger.StartTime = DateTime.Now.AddSeconds(5);
  6. trigger.RepeatInterval = 5000;
  7. trigger.RepeatCount = 1000;
  8. DateTime ft = sched.ScheduleJob(job, trigger);
  9. sched.Start();

JobExecute_2这个类就是要执行的具体任务,必继继承Ijob这个接口

代码:

  1. public class JobExecute_2:IJob
  2. {
  3. #region IJob 成员
  4. private static int n = 0;
  5. public void Execute(JobExecutionContext context)
  6. {
  7. ILog log = LogManager.GetLogger(typeof(JobExecute_2));
  8. StreamWriter w = null;
  9. try
  10. {
  11. n++;
  12. w = new StreamWriter("D:\\2.txt", true, System.Text.Encoding.UTF8);
  13. w.WriteLine("------------------------------------");
  14. w.WriteLine(n+" JobExecute_1正执行:时间:" + DateTime.Now);
  15. w.WriteLine("------------------------------------");
  16. }
  17. finally
  18. {
  19. if (w != null)
  20. {
  21. w.Close();
  22. w.Dispose();
  23. }
  24. }
  25. }
  26. #endregion
  27. }

复杂任务计划如下:

按钮单击事件:

  1. ISchedulerFactory sf = new StdSchedulerFactory();
  2. IScheduler sched = sf.GetScheduler();
  3. JobDetail job = new JobDetail("job1", "group1", typeof(JobExecute_1));
  4. CronTrigger trigger = new CronTrigger("trigger1", "group1", "job1", "group1");
  5. //二十秒执行一次
  6. trigger.CronExpressionString = "0/20 * * * * ?";
  7. sched.AddJob(job, true);
  8. DateTime ft = sched.ScheduleJob(trigger);
  9. sched.Start();
    1. JobExecute_1类具体代码:
    2. <pre name="code" class="csharp"> private static int i = 0;
    3. public void Execute(JobExecutionContext context)
    4. {
    5. StreamWriter w = null;
    6. try
    7. {
    8. i++;
    9. w = new StreamWriter("D:\\1.txt", true, System.Text.Encoding.UTF8);
    10. w.WriteLine("------------------------------------");
    11. w.WriteLine(i+" JobExecute_1正执行:时间:" + DateTime.Now);
    12. w.WriteLine("------------------------------------");
    13. }
    14. finally
    15. {
    16. w.Close();
    17. w.Dispose();
    18. }
    19. }</pre><br>
    20. <br>
    21. <p></p>
    22. <pre></pre>
    23. <br>
    24. 好了.到这里就大功告成了!
    25. <p></p>
    26. <p>可以运行一下试试啊!这样会定时在D盘根目录下1.txt和2.txt文件中写下日 志了!快快试试吧!</p>
    27. <p><a target="_blank" href="http://download.csdn.net/detail/wanzhuan2010/3597292">源码下载</a><br>
    28. </p>
    29. <p>还有一些具本的使用方法及介绍可以参考:</p>
    30. <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>
    31. </a></p>
    32. <p><br>
    33. </p>
    34. <br>

Quartz在.Net网站中的使用方法(附Demo)的更多相关文章

  1. vagrant网站中box下载方法

    假设需要下载Laravel/homestead这个包. 首先定位到地址:https://app.vagrantup.com/laravel/boxes/homestead/versions/8.0.0 ...

  2. 关于linux asp.net MVC网站中 httpHandlers配置无效的处理方法

    近期有Jexus用户反映,在Linux ASP.NET MVC网站的Web.config中添加 httpHandlers 配置用于处理自定义类型,但是在运行中并没有产生预期的效果,服务器返回了404( ...

  3. ASP.NET网站中获取当前虚拟目录的应用程序目录的方法(转)

    [原创]ASP.NET网站中获取当前虚拟目录的应用程序目录的方法 ASP.NET网站中获取当前虚拟目录的应用程序目录的方法1.问题描述:有时候,某个网页控件会被不同目录下文件使用,此时如果该控件中有一 ...

  4. 【前端】向blog或网站中添加语法高亮显示代码方法总结

    向blog或网站中添加语法高亮显示的代码方法总结 文章目录 预备知识 目标 第一类方法:嵌入 第二类方法:外部引用 第三类方法:忽略HTML和PHP 最近在写代码时遇到一个问题,就是如何让代码像在ID ...

  5. 【转载】ASP.NET中Server.MapPath方法获取网站根目录总结

    在ASP.NET网站应用程序中,可以通过Server.MapPath方法来获取跟服务器有关的目录信息,如获取网站的根目录.获取当前代码文件所在的目录路径.获取当前代码所在路径的上级路径等.Server ...

  6. 利用自定义动画 animate() 方法,实现某图书网站中“近 7 日畅销榜”中的图书无缝垂直向上滚动特效:当光标移入到图书上时,停止滚动,鼠标移开时,继续滚动

    查看本章节 查看作业目录 需求说明: 利用自定义动画 animate() 方法,实现某图书网站中"近 7 日畅销榜"中的图书无缝垂直向上滚动特效:当光标移入到图书上时,停止滚动,鼠 ...

  7. PHP获取网站中文章的第一张图片作为缩略图的方法

    调取文章中的第一张图作为列表页缩略图是很流行的做法,WordPress中一般主题默认也是如此,那我们接下来就一起来看看PHP获取网站中各文章的第一张图片的代码示例 $temp=mt_rand(1,4) ...

  8. 针对Linux ASP.NET MVC网站中 httpHandlers配置无效的解决方案

    近期有Linux ASP.NET用户反映,在MVC网站的Web.config中添加 httpHandlers 配置用于处理自定义类型,但是在运行中并没有产生预期的效果,服务器返回了404(找不到网页) ...

  9. [译]MVC网站教程(四):MVC4网站中集成jqGrid表格插件(系列完结)

    目录 1.   介绍 2.   软件环境 3.   在运行示例代码之前(源代码 + 示例登陆帐号) 4.         jqGrid和AJAX 5.         GridSettings 6.  ...

随机推荐

  1. os下,vs code 自动编译ts

    nodejs安装ts npm install -g typescript 进入工程目录,用命令初始化ts(生成tsconfig.json) tsc --init 如果要指定生成目录,打开tsconfi ...

  2. Android开发使用控件入门--环境搭建

    Android开发使用控件入门--环境搭建 软件名称(,梦,,想.CAD  ,控件) 1. 环境搭建: 3 1.1. 安装Eclipse 3 1.2. 下载JDK 3 1.3. 下载Android S ...

  3. mybatis 使用参数

    Parameter  1.   传入简单类型 JAVA代码: public User get(Long id) { return (User) getSqlSession().selectOne(&q ...

  4. case when里的like功能 ////// 截取(substr)

    case when里的like功能 假如要用到case when又要用到like这样的功能,即如果字符串包含‘语文’就怎么怎么样,包含‘数学’就怎么怎么样,包含‘英语’就怎么怎么样,like是用于wh ...

  5. MAC 打开Chrome打开开发者工具的快捷键

    mac下safari和chrome打开开发者工具的快捷键相同,都是 option(alt)+command+i 这个是我的默认配置,没有更改过的.

  6. poj2352 Stars【树状数组】

    Astronomers often examine star maps where stars are represented by points on a plane and each star h ...

  7. 1.Zigbee开发学习资源

    http://blog.csdn.net/zhanglianpin/article/details/46907349

  8. BZOJ 3916 [Baltic2014]friends

    [题解] 暴力枚举添加字符的位置,然后判断去掉这个位置的字符串是否有由两个相同的串拼接而成.本题的n的范围为200W,暴力判断会TLE,所以要使用哈希. #include<cstdio> ...

  9. 【codeforces 707E】Garlands

    [题目链接]:http://codeforces.com/contest/707/problem/E [题意] 给你一个n*m的方阵; 里面有k个联通块; 这k个联通块,每个连通块里面都是灯; 给你q ...

  10. JavaSE 学习笔记之新特性之泛型(二十)

    泛型:jdk1.5版本以后出现的一个安全机制.表现格式:< > 好处: 1:将运行时期的问题ClassCastException问题转换成了编译失败,体现在编译时期,程序员就可以解决问题. ...