线程的学习-1,控制线程数量,模仿的

学会了控制线程数量,目前感觉使用c#5.0的新特性灵活性不如之前的线程使用,所以不是很喜欢用新特性,不过也可能是我还没熟悉,等以后熟悉清楚了,再评价好不好,今天先搞一搞控制线程数量

public class TaskTest
    {
        public void Test()
        {
            List<Task> list = new List<Task>();
            
            TaskFactory taskFactory = new TaskFactory();

            for (int i = 0; i < 100; i++)
            {
                list.Add(taskFactory.StartNew(this.ClacNum));
                if(list.Count>8)
                {
                    //重新赋值,把未完成的,没有异常的,没有取消的线程任务重新绑定到list
                    list = list.Where(x => !x.IsCompleted && !x.IsCanceled && !x.IsFaulted).ToList();

                    //等待其中一个线程任务的完成
                    Task.WaitAny(list.ToArray());
                }
            }
        }        
        private void ClacNum()
        {
            long num = 0;
            for (int i = 0; i < 1000; i++)
            {
                num += i;
                Thread.Sleep(4);
            }
            Console.WriteLine("当前线程:{0},返回值为:{1}", Thread.CurrentThread.ManagedThreadId, num);
        }
    }

线程资源可以重复使用,不会新开线程

原文地址:https://www.cnblogs.com/wjr408/p/6692919.html