private static IEnumerable <TargetEntry> activeTargets(int targetCount) { for (int i = 0; i < targetCount; ++i) { TargetEntry target = targets[0]; targets.RemoveAt(0); yield return(target); } }
private static void doStartInvoke(Delegate target, params object[] args) { TargetEntry entry = new TargetEntry(target, args); lock (targets) { if (active) { targets.Add(entry); } else { entry.cancel(); } } }