class Program
{
static void Main(string[] args)
{
Console.WriteLine($"Task 学习开始----{Thread.CurrentThread.ManagedThreadId}");
List<Task> ta1 = new List<Task>();
fun1(out ta1);//得到一个异步多线程集合
TaskFactory tf = new TaskFactory();//现场工厂 管理线程
//等集合中的线程执行完,在从线程池中拿一个线程执行新方法
tf.ContinueWhenAll(ta1.ToArray(), t => {Console.WriteLine($"Task 学习结束----{Thread.CurrentThread.ManagedThreadId}"); });
}
public static void fun1(out List<Task> tlist)
{
List<Task> tasklist = new List<Task>();
//lamdba表达式直接写方法体
tasklist.Add(Task.Run(() => {Console.WriteLine($"======学习第1个线程======{Thread.CurrentThread.ManagedThreadId}"); }));
tasklist.Add(Task.Run(() => {Console.WriteLine($"======学习第2个线程======{Thread.CurrentThread.ManagedThreadId}"); }));
tasklist.Add(Task.Run(() => {Console.WriteLine($"======学习第3个线程======{Thread.CurrentThread.ManagedThreadId}"); }));
tasklist.Add(Task.Run(() =>
{
var result = fun2("hello!"); //调用有参数和返回值的方法
Console.WriteLine(result.ToString());
}));
tlist = tasklist;//返回值
}
//有参数的方法
public static string fun2(string a)
{
Console.WriteLine(a+"调用有参数返回值的方法!"+ Thread.CurrentThread.ManagedThreadId);
return a;
}
}