现在做一个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. Flask框架 之重定向、cookie和session

    一.URL重定向(redirect) @app.route("/login") def login(): # 使用url_for函数通过视图函数的名字找到url路径 url = u ...

  2. SpringMVC-Mybatis整合和注解开发

    SpringMVC-Mybatis整合和注解开发SpringMVC-Mybatis整合整合的思路在mybatis和spring整合的基础上 添加springmvc.spring要管理springmvc ...

  3. 第四节:EasyUI的一些操作

    一丶Datagrid //1.初始化页面数据 LoadGrid: function () { dgLog = $('#dg').datagrid({ url: '/Test_Areas/Test/St ...

  4. TWaver MONO Design中动画的导出与播放

    使用过MONO编辑器的朋友都应该了解MONO中支持一些动画的设置,比如开门,开窗,弹出设备,旋转场景,镜头巡航等.但如何将这些动画应用到自己的场景中呢?比如我们在编辑器中给机柜定义了动画,怎样让做好的 ...

  5. php第二十二节课

    AJAX <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...

  6. 行内块+calc+margin 三列布局

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  7. HDU - 2041 - 超级楼梯(dp)

    题意: 有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法? 思路: 如何到第n阶台阶,只能从n-1和n-2台阶上去,那么只需要计算到n-1阶台阶和到n-2阶台 ...

  8. linux命令整理版(拷贝)

    一.文件和目录操作命令 1.pwd 显示当前所在位置 -L 显示逻辑路径,忽略软链接文件 -P 显示物理路径时如果当前目录路径时软链接文件,则会显示软链接对应的源文件 2.cd 切换目录 cd - 回 ...

  9. Python之两个值对换

  10. js eslint语法规范错误提示代码

    最近在用eslint代码检测,因为之前不太注意代码规范,刚开始确实头疼,哈哈,不过用习惯了就会感觉还不错,其实也没有那样难调试 我看过之前有些人已经做过总结,自己记录下,方便自己以后查找 “Missi ...