public override void ScheduleAction(WakeLockBalancer.WakeLock wakeLock) { RemoveAction(wakeLock); var timer = new Timer(wakeLock.Interval * 1000.0); timer.Elapsed += (sender, e) => { if (wakeLock.Action.Execute != WakeLockBalancer.ActionObject.ExecuteType.TaskWithWakeLock) { wakeLock.Action.Action(); } else { Task.Factory.StartNew(() => { wakeLock.Action.Action(); }); } if (!wakeLock.Reoccurring) { timer.Enabled = false; timer.Dispose(); } }; _scheduledWakeLocks.Add(wakeLock, timer); timer.Enabled = true; }
public override void RemoveAction(WakeLockBalancer.WakeLock wakeLock) { if (_scheduledWakeLocks.ContainsKey(wakeLock)) { var timer = _scheduledWakeLocks[wakeLock]; timer.Enabled = false; timer.Dispose(); _scheduledWakeLocks.Remove(wakeLock); } }