public ASyncScheduleItem ReplaceOrFollowWith(ASyncScheduleItem item) { lock (Locker) { if (FollowUp != null) { return(FollowUp.ReplaceOrFollowWith(item)); } if (Started) { if (Done) { item.RunMe(); return(item); } else { FollowUp = item; return(item); } } else { MyAction = item.MyAction; FollowUp = item.FollowUp; return(this); } } }
public ASyncScheduleItem ReplaceOrFollowWith(ASyncScheduleItem item) { lock (Locker) { if (FollowUp != null) { return FollowUp.ReplaceOrFollowWith(item); } if (Started) { if (Done) { item.RunMe(); return item; } else { FollowUp = item; return item; } } else { MyAction = item.MyAction; FollowUp = item.FollowUp; return this; } } }
public ASyncScheduleItem StartASyncTask(Action a) { ASyncScheduleItem asyncer = new ASyncScheduleItem(); asyncer.MyAction = a; asyncer.RunMe(); return(asyncer); }
private void runInternal() { MyAction.Invoke(); lock (Locker) { Done = true; } if (FollowUp != null) { FollowUp.RunMe(); } }
public void FollowWith(ASyncScheduleItem item) { lock (Locker) { if (Done) { item.RunMe(); } else { FollowUp = item; } } }
public ASyncScheduleItem StartASyncTask(Action a) { ASyncScheduleItem asyncer = new ASyncScheduleItem(); asyncer.MyAction = a; asyncer.RunMe(); return asyncer; }