Quartz.Net嵌入到Asp.NET MVC2中,不会解雇作业

chu*_*nce 2 asp.net asp.net-mvc quartz.net

我试图通过嵌入我的.Net MVC2应用程序来使Quartz.net工作.我知道这不是理想的,但我只是想把它运行起来然后再转移到服务中.我无法解雇我的工作,但我认为我配置正确.在我的Global.asax.cs中:

protected void Application_Start()
{
    Quartz.IScheduler scheduler = BuildQuartzScheduler();
    ... 
 }
Run Code Online (Sandbox Code Playgroud)

这个方法直接来自教程:

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;
}
Run Code Online (Sandbox Code Playgroud)

而"控制器:"

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

       public void Execute(JobExecutionContext context) {
           throw new NotImplementedException();
        }
    }
Run Code Online (Sandbox Code Playgroud)

什么都没有被解雇.这是怎么回事?我确定必须有一个简单的语法错误,但这让我发疯!

Nic*_*cki 6

如果Application_Start看起来像这样,那么我认为scheduler一旦该方法完成执行,你的变量很可能被垃圾收集.

我会scheduler在你的HttpApplication类中存储一个作为静态变量的引用.这样,引用会在进程持续时间内挂起.一个猜测,但值得一试.