@@ -138,19 +138,34 @@ public static void Resume(IEnumerable<long> set)
138
138
/// <param name="interval">每次执行之间的间隔时间</param>
139
139
/// <param name="eventArgs">传递给定时器处理器的自定义参数</param>
140
140
/// <param name="repeatCount">循环次数,设置为-1表示无限循环执行</param>
141
+ /// <param name="isMissFire">是否允许错过执行</param>
141
142
/// <returns>生成的定时任务ID,可用于后续管理该任务</returns>
142
- public static long Schedule < T > ( long actorId , TimeSpan delay , TimeSpan interval , GameEventArgs eventArgs = null , int repeatCount = - 1 ) where T : ITimerHandler
143
+ public static long Schedule < T > ( long actorId , TimeSpan delay , TimeSpan interval , GameEventArgs eventArgs = null , int repeatCount = - 1 , bool isMissFire = true ) where T : ITimerHandler
143
144
{
144
145
var nextId = NextId ( ) ;
145
146
var firstTimeOffset = DateTimeOffset . Now . Add ( delay ) ;
146
147
TriggerBuilder builder ;
147
148
if ( repeatCount < 0 )
148
149
{
149
- builder = TriggerBuilder . Create ( ) . StartAt ( firstTimeOffset ) . WithSimpleSchedule ( x => x . WithInterval ( interval ) . RepeatForever ( ) ) ;
150
+ builder = TriggerBuilder . Create ( ) . StartAt ( firstTimeOffset ) . WithSimpleSchedule ( x =>
151
+ {
152
+ var scheduleBuilder = x . WithInterval ( interval ) . RepeatForever ( ) ;
153
+ if ( isMissFire )
154
+ {
155
+ scheduleBuilder . WithMisfireHandlingInstructionIgnoreMisfires ( ) ;
156
+ }
157
+ } ) ;
150
158
}
151
159
else
152
160
{
153
- builder = TriggerBuilder . Create ( ) . StartAt ( firstTimeOffset ) . WithSimpleSchedule ( x => x . WithInterval ( interval ) . WithRepeatCount ( repeatCount ) ) ;
161
+ builder = TriggerBuilder . Create ( ) . StartAt ( firstTimeOffset ) . WithSimpleSchedule ( x =>
162
+ {
163
+ var scheduleBuilder = x . WithInterval ( interval ) . WithRepeatCount ( repeatCount ) ;
164
+ if ( isMissFire )
165
+ {
166
+ scheduleBuilder . WithMisfireHandlingInstructionIgnoreMisfires ( ) ;
167
+ }
168
+ } ) ;
154
169
}
155
170
156
171
_scheduler . ScheduleJob ( GetJobDetail < T > ( nextId , actorId , eventArgs ) , builder . Build ( ) ) ;
@@ -169,7 +184,7 @@ public static long Delay<T>(long actorId, TimeSpan delay, GameEventArgs eventArg
169
184
{
170
185
var nextId = NextId ( ) ;
171
186
var firstTimeOffset = DateTimeOffset . Now . Add ( delay ) ;
172
- var trigger = TriggerBuilder . Create ( ) . StartAt ( firstTimeOffset ) . Build ( ) ;
187
+ var trigger = TriggerBuilder . Create ( ) . StartAt ( firstTimeOffset ) . WithSimpleSchedule ( x => x . WithMisfireHandlingInstructionNextWithRemainingCount ( ) ) . Build ( ) ;
173
188
_scheduler . ScheduleJob ( GetJobDetail < T > ( nextId , actorId , eventArgs ) , trigger ) ;
174
189
return nextId ;
175
190
}
0 commit comments