• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

asp.net任务调度之Quartz.net

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

如果要在asp.net中实现类似windows中计划任何的功能,你会怎么做?

您可以在留言里写出您的方法,以便我学习和改进自己的程序,谢谢。

以下是我的方法;

首先下载Quartz.net

web.config加入以下两个片段

代码
  <configSections>
    
<!--Quartz-->
    
<section name="quartz" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
    
<!--End Quartz-->
  
</configSections>

 

 

代码

  <!--Start Quartz-->
  
<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>
  
<!--End Quartz-->

 

 

Global.asax加入以下片段

 

代码
 void Application_Start(object sender, EventArgs e) 
    {
     
        
//Sys.Log.Sys.Info("starting sched...");//日志中计入系统开始时间
        
// construct a scheduler factory
        ISchedulerFactory schedFact = new Quartz.Impl.StdSchedulerFactory();
        
// get a scheduler
        sched = schedFact.GetScheduler();
        sched.Start();

        
// construct job info
        JobDetail jobDetail = new JobDetail("myJob"nulltypeof(Task.QuartzJob_Test));
        
// fire every hour
        Trigger trigger = TriggerUtils.MakeSecondlyTrigger(60 * 5);
        
// start on the next even hour
        trigger.StartTimeUtc = DateTime.UtcNow;
        trigger.Name 
= "myTrigger";
        sched.ScheduleJob(jobDetail, trigger);
        
        
//delay iisPool
        Task.DelayIISThreadPool.url = HttpContext.Current.Request.Url.ToString();
        JobDetail jobDetail2 
= new JobDetail("myJob2"nulltypeof(Task.DelayIISThreadPool));
        Trigger trigger2 
= TriggerUtils.MakeSecondlyTrigger(60 * 10);
        trigger2.StartTimeUtc 
= DateTime.UtcNow;
        trigger2.Name 
= "myTrigger2";
        sched.ScheduleJob(jobDetail2, trigger2);
        
// End Quartz
    }

    
void Application_End(object sender, EventArgs e) 
    {
        
//  Code that runs on application shutdown
        
        
//Quartz
        if (sched != null)
        {
            sched.Shutdown(
true);
        }
        
//End Quartz
    }

 

 

App_Code里加入以下两个文件

 

代码
//QuartzJob_Test.cs
using System;
using System.Collections.Generic;
using System.Web;

namespace Task
{
    
/// <summary>
    
/// Summary description for DelayIISThreadPool
    
/// </summary>
    public class DelayIISThreadPool : Quartz.IJob
    {

        
#region IJob Members
        
public static string url;
        
private static System.Net.WebClient wc = new System.Net.WebClient();

        
public void Execute(Quartz.JobExecutionContext context)
        {
            
if (string.IsNullOrEmpty(url))
                
return;
            wc.DownloadString(url);
        }

        
#endregion
    }

}

 

 

代码
//DelayIISThreadPool.cs
using System;
using System.Collections.Generic;
using System.Web;

namespace Task
{
    
public class DelayIISThreadPool : Quartz.IJob
    {

        
#region IJob Members
        
public static string url;
        
private static System.Net.WebClient wc = new System.Net.WebClient();

        
public void Execute(Quartz.JobExecutionContext context)
        {
            
if (string.IsNullOrEmpty(url))
                
return;
            wc.DownloadString(url);
        }

        
#endregion
    }

}

 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
ASP.NETGlobalApplication_Error事件中访问Session报错解决发布时间:2022-07-10
下一篇:
asp.net core 2.0的认证和授权发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap