Task案例1-处理多个任务

需求:如今有100数据须要处理,但只能启用8个任务处理。oop

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 + "结束");
        }
    }
}
相关文章
相关标签/搜索