예제 #1
0
        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;
        }
예제 #2
0
 public override void RemoveAction(WakeLockBalancer.WakeLock wakeLock)
 {
     if (_scheduledWakeLocks.ContainsKey(wakeLock))
     {
         var timer = _scheduledWakeLocks[wakeLock];
         timer.Enabled = false;
         timer.Dispose();
         _scheduledWakeLocks.Remove(wakeLock);
     }
 }