我有一个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();
随后尖叫着电脑!
提前感谢您的帮助。
马特
答案 0 :(得分:0)
我已经尝试过您的代码并且运行正常 我不认为网络服务是运行预定工作的最佳选择。
我建议你阅读ASP.NET Application Life Cycle。
<强>的Application_Start 强>
在ASP.NET中的第一个资源(例如页面)时调用 请求申请。仅调用Application_Start方法 在应用程序的生命周期中的一次。你可以用它 执行启动任务的方法,例如将数据加载到缓存中 并初始化静态值。您应该在期间仅设置静态数据 申请开始。不要设置任何实例数据,因为它会 仅适用于HttpApplication类的第一个实例 已创建。
在一段时间不活动后,在IIS中运行的ASP.NET辅助进程为shutdown and recycled。不过,你可以改变这种行为。
另一篇有趣的文章可以阅读here。