Task是.NetFramework3.0出现的,线程是基于线程池,然后提供了丰富的API
TaskFactory 提供对创建和计划 Task 对象的支持
创建和启动异步任务
1、Task task = new Task(() => ThreadPoolHelper.DoSomeThing());
task.Start();
2、Task task = Task.Run(() => ThreadPoolHelper.DoSomeThing());
3、TaskFactory taskFactory = Task.Factory;
Task task = taskFactory.StartNew(() => ThreadPoolHelper.DoSomeThing());
Task的线程是源于线程池 ,假如说我想控制下Task的并发数量,该怎么做?
1 { 2 //ThreadPool.SetMaxThreads(8, 8); 3 //线程池是单例的,全局唯一的 4 //设置后,同时并发的Task只有8个;而且线程是复用的; 5 //全局的,请不要这样设置!!! 6 for (int i = 0; i < 100; i++) 7 { 8 int k = i; 9 Task.Run(() => 10 { 11 Console.WriteLine($"This is k={k},i={i} running ThreadId={Thread.CurrentThread.ManagedThreadId.ToString("00")}"); 12 Thread.Sleep(2000); 13 }); 14 } 15 }