浏览代码

批量执行。

CrazyIter_Bin 3 年之前
父节点
当前提交
c38b6f68d6
共有 1 个文件被更改,包括 36 次插入0 次删除
  1. 36 0
      TEAMModelOS.SDK/Helper/Common/TaskAll/BatchTask.cs

+ 36 - 0
TEAMModelOS.SDK/Helper/Common/TaskAll/BatchTask.cs

@@ -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;
+            }
+        }
+    }
+}