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")}")); } }
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")}")); } }