using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace TEAMModelOS.SDK { public static class BatchTask { public static async Task TaskPage(this List> tasks,int pagesize) { if (tasks.IsNotEmpty()) { if (tasks.Count <= pagesize) { return await Task.WhenAll(tasks); } else { List ts = new List(); int pages = (tasks.Count + pagesize) / pagesize; //256是批量操作最大值,pages = (total + max -1) / max; for (int i = 0; i < pages; i++) { var lists = tasks.Skip((i) * pagesize).Take(pagesize).ToList(); ts.AddRange(await Task.WhenAll(lists)); } return ts.ToArray(); } } else { return null; } } public static async Task TaskPage(this List tasks, int pagesize) { if (tasks.IsNotEmpty()) { if (tasks.Count <= pagesize) { await Task.WhenAll(tasks); } else { int pages = (tasks.Count + pagesize) / pagesize; //256是批量操作最大值,pages = (total + max -1) / max; for (int i = 0; i < pages; i++) { var lists = tasks.Skip((i) * pagesize).Take(pagesize).ToList(); await Task.WhenAll(lists); } } } } public static List> Page(this IEnumerable tasks, int pagesize) { if (tasks != null && tasks.Any()) { if (tasks.Count() <= pagesize) { return new List> { tasks }; } else { List> ts = new List>(); int pages = (tasks.Count() + pagesize) / pagesize; //256是批量操作最大值,pages = (total + max -1) / max; for (int i = 0; i < pages; i++) { var lists = tasks.Skip((i) * pagesize).Take(pagesize).ToList(); ts.Add(lists); } return ts; } } else { return new List> (); } } } }