|
@@ -0,0 +1,36 @@
|
|
|
+using HTEXLib.COMM.Helpers;
|
|
|
+using System;
|
|
|
+using System.Collections.Generic;
|
|
|
+using System.Linq;
|
|
|
+using System.Text;
|
|
|
+using System.Threading.Tasks;
|
|
|
+
|
|
|
+namespace TEAMModelOS.SDK
|
|
|
+{
|
|
|
+ public static class BatchTask
|
|
|
+ {
|
|
|
+ public static async Task<T[]> TaskPage<T>(this List<Task<T>> tasks,int pagesize) {
|
|
|
+ if (tasks.IsNotEmpty())
|
|
|
+ {
|
|
|
+ if (tasks.Count <= pagesize)
|
|
|
+ {
|
|
|
+ return await Task.WhenAll(tasks);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ List<T> ts = new List<T>();
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|