[英]Quartz.Net 2.0.1 Trigger
我有一个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(),导致该作业被调用,或者该作业有很大错误?
PS我也试过了:
AlertTrigger = TriggerBuilder.Create()
.WithIdentity("AlertTrigger", "Group1")
.StartNow()
.WithCronSchedule("0 0/1 * * * ?")
.Build();
随后大喊大叫的电脑!
在此先感谢您的帮助。
马特
我已经尝试过您的代码,并且可以正常工作。
我不认为网络服务是运行计划作业的最佳选择,因为它是自然的。
我建议您阅读ASP.NET应用程序生命周期 。
Application_Start
当请求ASP.NET应用程序中的第一个资源(例如页面)时调用。 在应用程序的生命周期中,仅一次调用Application_Start方法。 您可以使用此方法执行启动任务,例如将数据加载到缓存中并初始化静态值。 您应该在应用程序启动期间仅设置静态数据。 不要设置任何实例数据,因为它仅对所创建的HttpApplication类的第一个实例可用。
IIS在IIS中运行的ASP.NET辅助进程经过一定时间的不活动后将被关闭并回收 。 但是,您可以更改此行为。
可以在这里阅读另一篇有趣的文章。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.