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); } } }
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); } } }
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; } } }