public void DoLater(int priority, DoLaterCallback dlcb, Object parms)
        {
            DoLaterBase newDoer = new DoLaterDelegateCaller(dlcb, parms);

            newDoer.priority = priority;
            this.DoLater(newDoer);
        }
        // do the item but do  the delay first. This puts it in the wait queue and it will
        // get done after the work item delay.
        public void DoLaterInitialDelay(DoLaterCallback dlcb, Object parms)
        {
            DoLaterBase w = new DoLaterDelegateCaller(dlcb, parms);

            w.containingClass = this;
            w.remainingWait   = 0; // the first time through, do it now
            w.timesRequeued   = 0;
            DoItEvenLater(w);
        }
 /// <summary>
 /// Experimental, untested entry which doesn't force the caller to create an
 /// instance of a DoLaterBase class but to use s delegate. The calling sequence
 /// would be something like:
 /// m_workQueue.DoLater((DoLaterCallback)delegate() {
 ///     return LocalMethod(localParam1, localParam2, ...);
 /// });
 /// </summary>
 /// <param name="dlcb"></param>
 public void DoLater(DoLaterCallback dlcb, Object parms)
 {
     this.DoLater(new DoLaterDelegateCaller(dlcb, parms));
 }
 public DoLaterDelegateCaller(DoLaterCallback dlcb, Object parms) : base()
 {
     m_dlcb       = dlcb;
     m_parameters = parms;
 }
 public DoLaterDelegateCaller(DoLaterCallback dlcb, Object parms)
     : base()
 {
     m_dlcb = dlcb;
     m_parameters = parms;
 }
 public void DoLater(int priority, DoLaterCallback dlcb, Object parms)
 {
     DoLaterBase newDoer = new DoLaterDelegateCaller(dlcb, parms);
     newDoer.priority = priority;
     this.DoLater(newDoer);
 }
 /// <summary>
 /// Experimental, untested entry which doesn't force the caller to create an
 /// instance of a DoLaterBase class but to use s delegate. The calling sequence
 /// would be something like:
 /// m_workQueue.DoLater((DoLaterCallback)delegate() { 
 ///     return LocalMethod(localParam1, localParam2, ...); 
 /// });
 /// </summary>
 /// <param name="dlcb"></param>
 public void DoLater(DoLaterCallback dlcb, Object parms)
 {
     this.DoLater(new DoLaterDelegateCaller(dlcb, parms));
 }
 // do the item but do  the delay first. This puts it in the wait queue and it will
 // get done after the work item delay.
 public void DoLaterInitialDelay(DoLaterCallback dlcb, Object parms)
 {
     DoLaterBase w = new DoLaterDelegateCaller(dlcb, parms);
     w.containingClass = this;
     w.remainingWait = 0;    // the first time through, do it now
     w.timesRequeued = 0;
     DoItEvenLater(w);
 }