C# 石英.Net 2.0.1触发器

C# 石英.Net 2.0.1触发器,c#,asp.net,web-services,quartz.net,quartz.net-2.0,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 ImageTrigg

我有一个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);
    }
...
}
接着对着电脑尖叫

提前感谢你的帮助


Matt

我已经尝试了你的代码,它工作正常。
我不认为web服务是运行计划作业的最佳选择,因为它的本质

我建议你读书

应用程序启动

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

在IIS中运行的ASP.NET工作进程在经过一定时间的不活动之后运行。不过,你可以改变这种行为


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

我已经尝试了您的代码,它工作正常。
我不认为web服务是运行计划作业的最佳选择,因为它的本质

我建议你读书

应用程序启动

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

在IIS中运行的ASP.NET工作进程在经过一定时间的不活动之后运行。不过,你可以改变这种行为


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

WithSimpleSchedule看起来不错。您没有忘记调度作业-即Scheduler.ScheduleJob(imageJob,ImageTrigger);对不起,您在中有,但忘了在中添加post@Matt:您正在尝试在web服务中计划作业吗?您应该能够调用ImageTrigger.GetNextFireTimeUtc();和ImageTrigger.GetFireTimeAfter(dt)查看作业是否已正确调度。请尝试启用日志记录,如果在调试模式下运行,请尝试将Visual Studio设置为在所有异常情况下中断。它甚至可能是您的作业构造函数抛出错误或出现错误(异步),否则(作业中没有参数公共构造函数等)。您没有忘记调度作业-即Scheduler.ScheduleJob(imageJob,ImageTrigger);对不起,您在中有,但忘了在中添加post@Matt:您正在尝试在web服务中计划作业吗?您应该能够调用ImageTrigger.GetNextFireTimeUtc();和ImageTrigger.GetFireTimeAfter(dt)查看作业是否已正确调度。请尝试启用日志记录,如果在调试模式下运行,请尝试将Visual Studio设置为在所有异常情况下中断。它甚至可能是您的作业构造函数抛出错误或出现错误(异步),否则(作业中没有arg公共构造函数等)。谢谢@LeftyX-这回答了我的问题。因为我在应用程序启动事件中触发了作业,所以我可以做我需要做的一切。@Matt:很高兴我帮助了Matt。谢谢@LeftyX-这回答了我的问题。因为我在应用程序启动事件中触发了作业,所以我可以做我需要做的一切。@Matt:很高兴我帮助了Matt。
        AlertTrigger = TriggerBuilder.Create()
                                     .WithIdentity("AlertTrigger", "Group1")
                                     .StartNow()
                                     .WithCronSchedule("0 0/1 * * * ?")
                                     .Build();