现在做一个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. thinkphp 5.0 “No input file specified”问题

    最近在用thinkphp5.0,想要试一下强制路由模式,却发现一直报错, 在网上一通乱找,最后发现是因为不能正确识别path_info造成的, 解决方案就是在 public目录下修改 ".h ...

  2. P1077摆花

    传送 总共要摆m盆花,而每种花最多有a[i]盆.仔细思索,发现它是一个多重背包求方案数问题.但是我蒟蒻的不会,于是跑去问大佬. 以下状态转移方程及化简from rqy 如果第i个物品有a[i],每个的 ...

  3. Github Pages另一个选择:GitCafe-Pages

    今天找资料时,瞥到了GitCafe-Pages字样,记得前些日子就看到过GitCafe,知道这个是国内的类似Github的代码托管平台,所以一看字样就明白了这个是与Github Pages一样的东东. ...

  4. (1) GoJS入门

    GoJS的官方下载,若下载失败,可尝试通过我的个人网盘分享下载. GoJS是一款功能强大,快速且轻量级的流程图控件,可帮助你在JavaScript 和HTML5 Canvas程序中创建流程图,且极大地 ...

  5. cc.Node—场景树

    对于cc.Node我分了四个模块学习: 1.场景树,2.事件响应,3.坐标系统,4.Action的使用:在此记录经验分享给大家. 场景树 1: creator是由一个一个的游戏场景组成,通过代码逻辑来 ...

  6. JavaScript--小白入门篇1

    一.JavaScript简介 1.1 JavaScript的用途   JavaScript用来制作web页面交互效果,提升用户体验.    简单列出几个JavaScript能够制作的页面效果,它能干什 ...

  7. [Luogu] P3225 [HNOI2012]矿场搭建

    题目描述 煤矿工地可以看成是由隧道连接挖煤点组成的无向图.为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处.于是矿主决定在某些挖煤点设立救援出口,使得无论哪一个挖煤点坍塌之 ...

  8. Fleecing the Raffle(NCPC 2016 暴力求解)

    题目: A tremendously exciting raffle is being held, with some tremendously exciting prizes being given ...

  9. 以gnome-terminal为例,修改gnome3 的默认配置

    gnome连续几个版本的terminal默认配置文件都是同一个配置文件“b1dcc9dd-5262-4d8d-a863-c897e6d979b9”.这是因为gnome的developers编辑了这个配 ...

  10. buf.readInt16BE()

    buf.readInt16BE(offset[, noAssert]) buf.readInt16LE(offset[, noAssert]) offset {Number} 0 noAssert { ...