0

我在 Globals.asax.cs 中的 Application_Start() 中初始化 Quartz,如下所示:

// construct a scheduler factory
        ISchedulerFactory schedFact = new StdSchedulerFactory();
        IScheduler sched = schedFact.GetScheduler();
        sched.Start();

        IJobDetail dailyUserMailJob = new JobDetailImpl("DailyUserMailJob", null, typeof(DailyUserMail));
        // fire every daye
        ITrigger dailyUserMailTrigger = new SimpleTriggerImpl("DailyUserMailTrigger", 1,
                                                 new TimeSpan(1, 0, 0, 0));
        sched.ScheduleJob(dailyUserMailJob, dailyUserMailTrigger);

作业应该每天运行一次,问题是,每次我访问我的网站时它都会运行。

有任何想法吗 ?

4

1 回答 1

2

作业应该每天运行一次

那么它不应该从 Web 应用程序启动。它应该类似于在调度程序上运行的控制台应用程序,或者可能是 Windows 服务。

根据设计,Web 应用程序是一个请求/响应系统。它不适合正在进行的后台任务或计划的离线任务。主要是因为您无法控制应用程序何时“启动”或“运行”。Web 服务器在管理资源时对此进行控制,并且可以出于多种原因停止/重新启动 Web 应用程序。

于 2013-07-10T23:10:48.210 回答