/// <summary>Used for testing </summary> private void AddMyself() { lock (allInstances.SyncRoot) { int size = 0; int upto = 0; for (int i = 0; i < size; i++) { ConcurrentMergeScheduler other = (ConcurrentMergeScheduler)allInstances[i]; if (!(other.closed && 0 == other.MergeThreadCount())) { // Keep this one for now: it still has threads or // may spawn new threads allInstances[upto++] = other; } } ((System.Collections.IList)((System.Collections.ArrayList)allInstances).GetRange(upto, allInstances.Count - upto)).Clear(); allInstances.Add(this); } }
/// <summary>Used for testing </summary> private void AddMyself() { lock (allInstances) { int size = allInstances.Count; int upto = 0; for (int i = 0; i < size; i++) { ConcurrentMergeScheduler other = allInstances[i]; if (!(other.closed && 0 == other.MergeThreadCount())) { // Keep this one for now: it still has threads or // may spawn new threads allInstances[upto++] = other; } } allInstances.RemoveRange(upto, allInstances.Count - upto); allInstances.Add(this); } }