// Token: 0x060008ED RID: 2285 RVA: 0x0003C688 File Offset: 0x0003A888
        private void OnSpool(object state)
        {
            bool flag   = false;
            long cookie = (long)state;

            lock (this)
            {
                if (!this.ShouldContinue(cookie))
                {
                    return;
                }
                TimeSpan dueTime = ScheduledActionBase.GetDueTime(this.ExpectedTime);
                if (!(flag = (TimeSpan.Zero == dueTime)))
                {
                    this.Timer.Change((dueTime <= ScheduledActionBase.MaxTimerDueTime) ? dueTime : ScheduledActionBase.MaxTimerDueTime, TimeSpan.FromMilliseconds(-1.0));
                }
            }
            if (flag)
            {
                if (!this.ShouldContinue(cookie))
                {
                    return;
                }
                this.OnTimer(state);
            }
        }
예제 #2
0
 // Token: 0x0600098C RID: 2444 RVA: 0x00040164 File Offset: 0x0003E364
 public SchedulingInfo(ScheduledActionBase oldScheduledAction, ScheduledActionBase scheduledAction, Action customizedSteps, string contextInfo)
 {
     if (oldScheduledAction != null && scheduledAction != null && oldScheduledAction.GetType() != scheduledAction.GetType())
     {
         throw new ArgumentOutOfRangeException("scheduledAction");
     }
     if (customizedSteps != null && (oldScheduledAction != null || scheduledAction != null))
     {
         throw new ArgumentOutOfRangeException("customizedSteps");
     }
     if (customizedSteps == null && oldScheduledAction == null && scheduledAction == null)
     {
         throw new ArgumentNullException("customizedSteps");
     }
     this.OldScheduledAction = oldScheduledAction;
     this.ScheduledAction    = scheduledAction;
     this.CustomizedSteps    = customizedSteps;
     this.ContextInfo        = contextInfo;
 }
 // Token: 0x060008E4 RID: 2276 RVA: 0x0003C470 File Offset: 0x0003A670
 public bool Reschedule(ExDateTime expectedTime)
 {
     if (this.DisposalRequested)
     {
         return(false);
     }
     if (this.Dismiss())
     {
         lock (this)
         {
             this.ExpectedTime = expectedTime;
             TimeSpan dueTime = ScheduledActionBase.GetDueTime(this.ExpectedTime);
             bool     flag2   = dueTime <= ScheduledActionBase.MaxTimerDueTime;
             this.Timer = new Timer(flag2 ? new TimerCallback(this.OnTimer) : new TimerCallback(this.OnSpool), this.TimerCookie, flag2 ? dueTime : ScheduledActionBase.MaxTimerDueTime, TimeSpan.FromMilliseconds(-1.0));
         }
         return(true);
     }
     return(false);
 }
예제 #4
0
 // Token: 0x06000977 RID: 2423 RVA: 0x0003F7AA File Offset: 0x0003D9AA
 public static void ScheduleAction(ScheduledActionBase action, string callerHint)
 {
     CalendarNotificationInitiator.actionSchedulingQueue.Enqueue(new CalendarNotificationInitiator.SchedulingInfo(null, action, null, callerHint));
 }