簡體   English   中英

Quartz.Net 2.0.1觸發器

[英]Quartz.Net 2.0.1 Trigger

我有一個Web應用程序,我試圖設置一個觸發器,使其在應用程序啟動時啟動,然后每5分鍾觸發一次

一切都在Global.asax中-似乎是放置它的正確位置:

public class Global : HttpApplication
{
    public static StdSchedulerFactory SchedulerFactory;
    public static IScheduler Scheduler;
    public static ITrigger ImageTrigger;

    protected void Application_Start(object sender, EventArgs e)
    {
        SchedulerFactory = new StdSchedulerFactory();
        Scheduler = SchedulerFactory.GetScheduler();

        Scheduler.Start();

        ImageTrigger = TriggerBuilder.Create()
                                     .WithIdentity("ImageTrigger", "Group1")
                                     .StartNow()
                                     .WithSimpleSchedule(x => x.RepeatForever().WithIntervalInMinutes(5))
                                     .Build();

        var imageJob = JobBuilder.Create<DownloadImages>()
                                     .WithIdentity("DownloadImages" , "Group1")
                                     .Build();
        Scheduler.ScheduleJob(imageJob, ImageTrigger);
    }
...
}

因此,我假設有一個簡單的計划表使用.WithIntervalInMiniutes(),導致該作業被調用,或者該作業有很大錯誤?

PS我也試過了:

        AlertTrigger = TriggerBuilder.Create()
                                     .WithIdentity("AlertTrigger", "Group1")
                                     .StartNow()
                                     .WithCronSchedule("0 0/1 * * * ?")
                                     .Build();

隨后大喊大叫的電腦!

在此先感謝您的幫助。

馬特

我已經嘗試過您的代碼,並且可以正常工作。
我不認為網絡服務是運行計划作業的最佳選擇,因為它是自然的。

我建議您閱讀ASP.NET應用程序生命周期

Application_Start

當請求ASP.NET應用程序中的第一個資源(例如頁面)時調用。 在應用程序的生命周期中,僅一次調用Application_Start方法。 您可以使用此方法執行啟動任務,例如將數據加載到緩存中並初始化靜態值。 您應該在應用程序啟動期間僅設置靜態數據。 不要設置任何實例數據,因為它僅對所創建的HttpApplication類的第一個實例可用。

IIS在IIS中運行的ASP.NET輔助進程經過一定時間的不活動后將被關閉並回收 但是,您可以更改此行為。

可以在這里閱讀另一篇有趣的文章。

暫無
暫無

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

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