2

我试图通过嵌入到我的 .Net MVC2 应用程序中来让 Quartz.net 工作。我知道这并不理想,但我只是想在将其转移到服务之前启动并运行它。我无法启动我的工作,但我认为我的配置正确。在我的 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();
        }
    }

什么都不会被解雇。这是怎么回事?我确信一定有一个简单的语法错误,但这让我发疯!

4

1 回答 1

6

如果Application_Start看起来像这样,那么我认为您的scheduler变量可能会在该方法完成执行后立即被垃圾收集。

我会将对的引用存储为您的类scheduler中的静态变量。HttpApplication这样,引用会在整个过程中一直存在。一个猜测,但值得一试。

于 2010-08-22T03:51:05.533 回答