Quartz.Net встроен в Asp.NET MVC2, не увольняя - PullRequest
2 голосов
/ 22 августа 2010

Я пытаюсь заставить Quartz.net работать, встраивая в мое приложение .Net MVC2.Я знаю, что это не идеально, но я просто пытаюсь запустить его и запустить, прежде чем передать его в службу.Я не могу заставить свою работу сработать, но я думаю, что настроен правильно.В моем Global.asax.cs:

protected void Application_Start()
{
    Quartz.IScheduler scheduler = BuildQuartzScheduler();
    ... 
 }

И метод, взятый прямо из урока:

private IScheduler BuildQuartzScheduler()
{
    // construct a scheduler factory
    ISchedulerFactory schedFact = new StdSchedulerFactory();

    // get a scheduler
    IScheduler sched = schedFact.GetScheduler();
    sched.Start();

    // construct job info
    JobDetail jobDetail = new JobDetail("myJob", null, typeof(QuartzController));
    // fire every hour
    Trigger trigger = TriggerUtils.MakeMinutelyTrigger();
    // start on the next even hour
    trigger.StartTimeUtc = TriggerUtils.GetEvenMinuteDate(DateTime.UtcNow);
    trigger.Name = "myTrigger";
    sched.ScheduleJob(jobDetail, trigger);
    return sched;
}

И "контроллер:"

    public class QuartzController : IJob
    {
       public QuartzController() {
       }

       public void Execute(JobExecutionContext context) {
           throw new NotImplementedException();
        }
    }

Ничто никогда не будет уволено.В чем дело?Я уверен, что должна быть простая синтаксическая ошибка, но она сводит меня с ума!

1 Ответ

6 голосов
/ 22 августа 2010

Если Application_Start выглядит так, то я считаю, что ваша переменная scheduler, вероятно, будет собирать мусор, как только этот метод завершит выполнение.

Я бы сохранил ссылку на scheduler как статическую переменную в вашем классе HttpApplication. Таким образом, ссылка остается на время процесса. Догадка, но стоит попробовать.

...