zoukankan      html  css  js  c++  java
  • 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
        }

    }
  • 相关阅读:
    《Windows编程循序渐进》——对话框应用程序2
    《Windows编程循序渐进》——对话框应用程序
    《Windows编程循序渐进》——建立MFC应用程序
    关于基类和子类构造函数的问题
    《Windows驱动开发技术详解》之分层驱动程序
    《Windows驱动开发技术详解》之驱动程序调用驱动程序——通过设备指针调用其他驱动程序
    《Windows驱动开发技术详解》之驱动程序调用驱动程序——以文件句柄形式调用其它驱动程序
    《Windows驱动开发技术详解》之定时器
    《Windows驱动开发技术详解》之自定义StartIO
    四种UNIX实现
  • 原文地址:https://www.cnblogs.com/zyip/p/1680923.html
Copyright © 2011-2022 走看看