需求:现在有100数据需要处理,但只能启用8个任务处理。
namespace TTask1{ class Program { static void Main(string[] args) { string[] TaskNames = new string[100]; Task[] Tasks = new Task[8]; for(int i = 0; i< TaskNames.Length; i++) { TaskNames[i] = "Task" + i; } int j = 0; int taskLoop = 100 % 8 == 0 ? 100 / 8 : 100 / 8 + 1; for (int i = 0; i < taskLoop; i++) { for(int m = 0; m < 8 && j+m < 100; m++) { TMyTask MyTask = new TMyTask(); MyTask.TaskName = TaskNames[j+m]; Tasks[m] = new Task(MyTask.DoWork); Tasks[m].Start(); } //等待当前8个任务完成,然后进入下个循环,重新创建新的8个任务 for (int m = 0; m < 8; m++) { Tasks[m].Wait(); } j = 8*(i+1); Console.WriteLine("Four Tasks Finished"); } Console.WriteLine("All Tasks Finished"); Console.ReadKey(); } } class TMyTask { public string TaskName { set; get; } //耗时任务 public void DoWork() { Console.WriteLine("任务 " + TaskName +"开始"); Thread.Sleep(100); Console.WriteLine("任务 " + TaskName + "结束"); } }}