Esempio n. 1
0
 private void OnFirstElementChanged(object source, KeyedPriorityQueueHeadChangedEventArgs <TimerEventSubscription> e)
 {
     lock (this.locker)
     {
         ITimerService service = this.executor.GetService(typeof(ITimerService)) as ITimerService;
         if ((e.NewFirstElement != null) && (this.executor != null))
         {
             WorkflowTrace.Host.TraceEvent(TraceEventType.Information, 0, "TimerEventSubscriptionQueue: {0} Schedule Timer {1} for {2} ", new object[] { this.instanceId, e.NewFirstElement.SubscriptionId, e.NewFirstElement.ExpiresAt });
             service.ScheduleTimer(this.executor.ProcessTimersCallback, e.NewFirstElement.WorkflowInstanceId, e.NewFirstElement.ExpiresAt, e.NewFirstElement.SubscriptionId);
         }
         if (e.OldFirstElement != null)
         {
             WorkflowTrace.Host.TraceEvent(TraceEventType.Information, 0, "TimerEventSubscriptionQueue: {0} Unschedule Timer {1} for {2} ", new object[] { this.instanceId, e.OldFirstElement.SubscriptionId, e.OldFirstElement.ExpiresAt });
             service.CancelTimer(e.OldFirstElement.SubscriptionId);
         }
     }
 }