Quartz.Net—IJob特性


IJob默認情況下是無狀態的,和其他系統沒有關系  特別是job里面的jobdata每次都是新的。可以無限擴展。

PersistJobDataAfterExecution JobData持久化

Job在執行的后會生成一個新的Job為下一次執行,並且返回這個老的Job。  這樣就保持了Job的無狀態。但是有時候需要讓他有狀態,就要加上特性PersistJobDataAfterExecutionAttribute,使JobDataMap一直保持。

[PersistJobDataAfterExecution]
public class MyJob7 : IJob
{

    public Task Execute(IJobExecutionContext context)
    {
        Console.WriteLine(context.JobDetail.JobDataMap["zangfeng"]);
        context.JobDetail.JobDataMap["zangfeng"] = context.JobDetail.JobDataMap["zangfeng"] + "1";
        return Task.Factory.StartNew(() => Console.WriteLine($"工作任務測試7:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}"));  
    }
}
View Code

 

DisallowConcurrentExecution 禁用同步執行

一個Job可能會有多個Trigger。導致一個Job,同時執行。

//[PersistJobDataAfterExecution]
[DisallowConcurrentExecution]
public class MyJob7 : IJob
{

    public Task Execute(IJobExecutionContext context)
    {
        Console.WriteLine(context.JobDetail.JobDataMap["zangfeng"]);
        context.JobDetail.JobDataMap["zangfeng"] = context.JobDetail.JobDataMap["zangfeng"] + "1";
        return Task.Factory.StartNew(() => Console.WriteLine($"工作任務測試7:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}"));  
    }
}
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM