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);

ジョブは 1 日に 1 回実行する必要がありますが、問題は、Web サイトにアクセスするたびに実行されることです。

何か案は ?

4

1 に答える 1

2

ジョブは 1 日 1 回実行する必要があります

次に、Web アプリケーションから起動しないでください。これは、スケジューラで実行されるコンソール アプリケーションのようなものか、おそらく Windows サービスである必要があります。

Web アプリケーションは、設計上、要求/応答システムです。進行中のバックグラウンド タスクやスケジュールされたオフライン タスクには適していません。主な理由は、アプリケーションの「開始」または「実行中」を制御できないためです。Web サーバーは、リソースを管理するときにこれを制御し、さまざまな理由で Web アプリケーションを停止/再起動できます。

于 2013-07-10T23:10:48.210 に答える