.net 多Task放入一个LIST Loop

     IList tasks = new List();
            while (currentSetp < tracingCount)
            {
                if (tasks.Count(i => i.IsCompleted) > 1)
                {
                    var taskIds = tasks.Where(m => m.IsCompleted).Select(m => m.Id).ToList();
                    foreach (var id in taskIds)
                    {
                        tasks.Remove(tasks.Single(m => m.Id == id));
                    }
                }
                else
                {
                    Task.WaitAny(Task.Delay(1000));
                }

                if (tasks.Count >= 10) continue;
                Console.WriteLine(currentSetp + " passed,Remain:" + (tracingCount - currentSetp) + ",Found:" + report.Count);

                var currentLoop = userTracingDb.Skip(currentSetp).Take(jump);


                foreach (var loop in currentLoop)
                {
                    tasks.Add(Task.Run(() => IpIdentify(loop)));
                }

                currentSetp += jump;

}

你可能感兴趣的:(.NET)