public WhenAllPromiseAll(IEnumerable <ValueTask> tasks) { if (tasks is ValueTask[] array) { Run(array); return; } if (tasks is IReadOnlyCollection <ValueTask> c) { Run(c, c.Count); return; } if (tasks is ICollection <ValueTask> c2) { Run(c2, c2.Count); return; } var list = new TempList <ValueTask>(99); try { foreach (var item in tasks) { list.Add(item); } Run(list.AsSpan()); } finally { list.Dispose(); } }
public WhenAllPromiseAll(IEnumerable <ValueTask <T> > tasks) { if (tasks is ValueTask <T>[] array) { result = CreateArray(array.Length); Run(array); return; } if (tasks is IReadOnlyCollection <ValueTask <T> > c) { result = CreateArray(c.Count); Run(c, c.Count); return; } if (tasks is ICollection <ValueTask <T> > c2) { result = CreateArray(c2.Count); Run(c2, c2.Count); return; } var list = new TempList <ValueTask <T> >(99); try { foreach (var item in tasks) { list.Add(item); } var span = list.AsSpan(); result = CreateArray(span.Length); Run(span); } finally { list.Dispose(); } }