1

私はasp.net Webサイトを持っており、1日に1回タスクを実行したいと考えています。タスクは、登録の有効期限が切れる 2 日前にユーザーに電子メールを送信することです。Quartz.NETバージョン 1.0を使用しました。毎秒ウィンドウを開くサンプル コードを作成しました。このコードを asp.net プロジェクトのどこに配置すればよいかわかりません。シンプルなページになりました。ページから独立させたい。

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

        public void Execute(JobExecutionContext context)
        {
            Console.WriteLine("DumbJob is executing.");
            System.Windows.Forms.MessageBox.Show("NICE");
        }
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            // 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(DumbJob));

            // fire every hour
            Trigger trigger = TriggerUtils.MakeSecondlyTrigger();//.MakeHourlyTrigger();

            // start on the next even hour
            trigger.StartTimeUtc = TriggerUtils.GetEvenSecondDate(DateTime.UtcNow);
            trigger.Name = "myTrigger";

            sched.ScheduleJob(jobDetail, trigger);
        }
    }
4

1 に答える 1

1

それを行うにはさまざまな方法があります...しかし、確かに、あなたのケースに合わせてある種のコンソールアプリケーションを構築する方が良いでしょう。

率直に言って、最も単純なのは、毎日トリガーされ、期限切れ間近のユーザーをチェックし、見つかったときに電子メールを送信する exe プログラム (コンソール dotnet を使用して作成する) を起動する Windows スケジュール タスクです。ユーザーと電子メールのコードをさまざまな場所に配置したくない (そして、これらすべてをドットネット Web アプリに集中化する) 場合は、シン クライアントによって呼び出される .NET Web アプリに SOAP/REST エンド ポイントを作成します。 、その「Windowsスケジュールタスク」によってスケジュールされます

たとえば、ジョブのクラスタリング/ジョブの高可用性/ジョブの監視など、より多くのエンタープライズ処理をスケジューリングおよび実行する場合、Quartz を使用すると柔軟性が向上します。ただし、それでも、Quartz スケジューラを起動し、トリガー、および永久に実行...(より詳細な制御のために、おそらくWindowsの「ラッパー」サービスにラップされます)

于 2013-08-27T18:51:46.923 に答える