C# 任务并行

            List<int> ids = new List<int>();
            for (int i = 0; i < 5000; i++)
            {
                ids.Add(i);
            }
            int maxDegreeOfParamllelism = 100;//最大并行数量
            List<Task> tasks = new List<Task>();
            //方法1
            TaskFactory TaskFactory = new TaskFactory();
            ids.ForEach(id =>
            {
                tasks.Add(
                    TaskFactory.StartNew(() =>
                    {
                        //业务代码;-----------------------------------------
                        //业务代码;-----------------------------------------
                    })
                );
                //核心代码,保持当前线程总量为:maxDegreeOfParamllelism
                if (tasks.Count >= maxDegreeOfParamllelism)
                {
                    Task.WaitAny(tasks.ToArray());
                    tasks = tasks.Where(t => t.Status == TaskStatus.Running).ToList();
                }

            });
            //方法2
            ParallelOptions paralleloptions = new ParallelOptions();
            paralleloptions.MaxDegreeOfParallelism = maxDegreeOfParamllelism;//设置最大并行度
            Parallel.ForEach(ids, paralleloptions, id => {
                //业务代码;-----------------------------------------
                //业务代码;-----------------------------------------
            });

原文地址:https://www.cnblogs.com/lanyubaicl/p/11177055.html