Ejemplo n.º 1
0
        internal void ScheduleContinuation(ScheduleMode scheduleMode, Action callback)
        {
            Debug.Assert(callback != null);
            lock (Scheduler.scheduledEntries)
            {
                var node = NewCallback();
                node.MicroThreadAction = callback;

                if (ScheduledLinkedListNode.Index == -1)
                {
                    Scheduler.Schedule(ScheduledLinkedListNode, scheduleMode);
                }
            }
        }
Ejemplo n.º 2
0
        internal void ScheduleContinuation(ScheduleMode scheduleMode, SendOrPostCallback callback, object callbackState)
        {
            Debug.Assert(callback != null);
            lock (Scheduler.scheduledEntries)
            {
                var node = NewCallback();
                node.SendOrPostCallback = callback;
                node.CallbackState      = callbackState;

                if (ScheduledLinkedListNode.Index == -1)
                {
                    Scheduler.Schedule(ScheduledLinkedListNode, scheduleMode);
                }
            }
        }
Ejemplo n.º 3
0
 internal void Reschedule(ScheduleMode scheduleMode, long newPriority)
 {
     lock (Scheduler.scheduledEntries)
     {
         if (ScheduledLinkedListNode.Index != -1)
         {
             Scheduler.scheduledEntries.Remove(ScheduledLinkedListNode);
             ScheduledLinkedListNode.Value.Priority = newPriority;
             Scheduler.Schedule(ScheduledLinkedListNode, scheduleMode);
         }
         else
         {
             ScheduledLinkedListNode.Value.Priority = newPriority;
         }
     }
 }