簡體   English   中英

如果asp.net應用程序池空閑,則Quartz.NET可以調用我的類函數

[英]Quartz.NET can invoke my class function if asp.net app pool is idle

假設我以這種方式在application_start事件中編寫並安排了與Quartz.NET作業相關的代碼

public class HelloJob : IJob
    {
        public void Execute(JobExecutionContext context)
        {
            //Send Mail
        }
    }


    public static void ConfigureQuartzJobs()
    {
        // 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(HelloJob));
        //created trigger which will fire every minute starting immediately
    ITrigger trigger = TriggerBuilder.Create()
          .WithIdentity("myTrigger", "group1")
          .StartNow()
          .WithSimpleSchedule(x => x
              .WithIntervalInSeconds(60)
              .RepeatForever())
          .Build();

        sched.ScheduleJob(jobDetail, trigger);
}

protected void Application_Start()
{
    ConfigureQuartzJobs();
}

所以我想知道,如果應用程序池空閑或如果沒有訪問者正在瀏覽我的網站的任何頁面,我的例程將在每60秒后觸發一次?

我主要關心的是,如果應用程序池空閑或活動,我需要在60秒后調用特定的例程。 甚至沒有訪問者在瀏覽我的網站的任何頁面。

所以請指導我該怎么辦? 謝謝

您可以在不使用Quartz的情況下執行以下操作:1)在Application_End方法中,檢查關閉原因(您對超時感興趣)。 http://msdn.microsoft.com/zh-CN/library/system.web.applicationshutdownreason(v=vs.110).aspx

2)當您獲得空閑超時原因時,將具有特定ID的事件和事件寫入Windows事件日志

3)轉到Windows任務計划程序。 創建新任務。 轉到觸發器。 新觸發器。 在觸發類型組合框中,選擇“發生事件”。 選擇您要寫入日志的日志,源和事件ID。 (默認為應用程序)

4)轉到操作->新建->發送電子郵件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM