@@ -246,11 +246,11 @@ function SCHEDULEDISPATCHER:AddSchedule( Scheduler, ScheduleFunction, ScheduleAr
246246 -- self:T3( { Repeat = CallID, CurrentTime, ScheduleTime, ScheduleArguments } )
247247 return ScheduleTime -- returns the next time the function needs to be called.
248248 else
249- self :Stop ( Scheduler , CallID )
249+ self :_Reclaim ( Scheduler , CallID )
250250 end
251251
252252 else
253- self :Stop ( Scheduler , CallID )
253+ self :_Reclaim ( Scheduler , CallID )
254254 end
255255 else
256256 self :I ( " <<<>" .. Name .. " :" .. Line .. " (" .. Source .. " )" )
@@ -375,3 +375,13 @@ function SCHEDULEDISPATCHER:NoTrace( Scheduler )
375375 Scheduler .ShowTrace = false
376376end
377377
378+ --- Helper for memory cleanup for self stopping schedulers
379+ -- @param #SCHEDULEDISPATCHER self
380+ -- @param Core.Scheduler#SCHEDULER Scheduler Scheduler object.
381+ -- @param #string CallID (Optional) Scheduler Call ID.
382+ function SCHEDULEDISPATCHER :_Reclaim ( Scheduler , CallID )
383+ self :Stop ( Scheduler , CallID ) -- remove DCS timer, nil ScheduleID
384+ if self .Schedule [Scheduler ] then self .Schedule [Scheduler ][CallID ] = nil end
385+ self .ObjectSchedulers [CallID ] = nil
386+ self .PersistentSchedulers [CallID ] = nil
387+ end
0 commit comments