Quartz.Net 2.0.1触发器

时间:2012-09-13 15:25:39

标签: c# asp.net web-services quartz.net quartz.net-2.0

我有一个Web应用程序,我正在尝试设置一个触发器,以便在应用程序启动时启动,然后每5分钟触发一次

一切都在Global.asax中 - 似乎是正确的地方:

public class Global : HttpApplication
{
    public static StdSchedulerFactory SchedulerFactory;
    public static IScheduler Scheduler;
    public static ITrigger ImageTrigger;

    protected void Application_Start(object sender, EventArgs e)
    {
        SchedulerFactory = new StdSchedulerFactory();
        Scheduler = SchedulerFactory.GetScheduler();

        Scheduler.Start();

        ImageTrigger = TriggerBuilder.Create()
                                     .WithIdentity("ImageTrigger", "Group1")
                                     .StartNow()
                                     .WithSimpleSchedule(x => x.RepeatForever().WithIntervalInMinutes(5))
                                     .Build();

        var imageJob = JobBuilder.Create<DownloadImages>()
                                     .WithIdentity("DownloadImages" , "Group1")
                                     .Build();
        Scheduler.ScheduleJob(imageJob, ImageTrigger);
    }
...
}

所以我假设有一个简单的日程安排使用.WithIntervalInMiniutes()导致调用作业或让它大大错误?

P.S。我也尝试过:

        AlertTrigger = TriggerBuilder.Create()
                                     .WithIdentity("AlertTrigger", "Group1")
                                     .StartNow()
                                     .WithCronSchedule("0 0/1 * * * ?")
                                     .Build();

随后尖叫着电脑!

提前感谢您的帮助。

马特

1 个答案:

答案 0 :(得分:0)

我已经尝试过您的代码并且运行正常 我不认为网络服务是运行预定工作的最佳选择。

我建议你阅读ASP.NET Application Life Cycle

<强>的Application_Start

  

在ASP.NET中的第一个资源(例如页面)时调用   请求申请。仅调用Application_Start方法   在应用程序的生命周期中的一次。你可以用它   执行启动任务的方法,例如将数据加载到缓存中   并初始化静态值。您应该在期间仅设置静态数据   申请开始。不要设置任何实例数据,因为它会   仅适用于HttpApplication类的第一个实例   已创建。

在一段时间不活动后,在IIS中运行的ASP.NET辅助进程为shutdown and recycled。不过,你可以改变这种行为。

另一篇有趣的文章可以阅读here