IList<Task> tasks = new List<Task>();
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)));
}
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;
}