簡體   English   中英

使用石英.NET計划Windows服務

[英]Scheduling a windows service with quartz .NET

我有一個自定義的Windows服務,我想使用Quartz .NET安排服務運行的時間。 現在,我了解了quartz.NET的基礎知識,但是我不確定如何將其連接到Windows服務。因此,可以說我有想每小時運行的Service.exe。 如何通過Quartz實現此功能? 我知道這是一個模糊的問題,但實際上沒有其他方法可以提出這個問題。

提前致謝。

您需要設置作業和觸發器。 作業由觸發器調用。( http://quartznet.sourceforge.net/tutorial/lesson_3.html )。 這是每小時運行一個示例。

// 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.MakeHourlyTrigger();
// start on the next even hour
trigger.StartTime = TriggerUtils.GetEvenHourDate(DateTime.UtcNow);  
trigger.Name = "myTrigger";
sched.ScheduleJob(jobDetail, trigger);

這是您的調用Service.exe的類。

public class DumbJob : IJob
{
    public void Execute(JobExecutionContext context)
    {
        string instName = context.JobDetail.Name;
        string instGroup = context.JobDetail.Group;

        // Note the difference from the previous example
        JobDataMap dataMap = context.MergedJobDataMap;

        string jobSays = dataMap.GetString("jobSays");
        float myFloatValue = dataMap.GetFloat("myFloatValue");
        ArrayList state = (ArrayList) dataMap.Get("myStateData");
        state.Add(DateTime.UtcNow);

        Console.WriteLine("Instance {0} of DumbJob says: {1}", instName, jobSays);
    }
}

您也可以只在Windows服務中啟動線程,跟蹤上次觸發該exe的時間,然后再重置。 Quartz要簡單一些,並且可以完成相同的任務。 但是,您的問題是針對石英的。

暫無
暫無

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

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