• asp.net任务调度之Quartz.net


    如果要在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
        }

    }
  • 相关阅读:
    Spring sprint @ ninth day
    微软面试:找水王问题
    Spring sprint @ first day
    软件工程概论 购书最低价格问题
    网络助手的NABCD分析
    记初学net-SNMP
    求二维数组联通子数组和的最大值 (联通涂色) beta!
    二维数组环状最大子矩阵
    一维数组中的最大子数组(环状)
    图书助手冲刺第七天
  • 原文地址:https://www.cnblogs.com/zyip/p/1680923.html
Copyright © 2020-2023  润新知