前面讲了《.net中async/await异步编程》,如果方法中使用了多个异步方法,该如何同步的等待Task完成?
Task.WaitAll 等待提供的所有 System.Threading.Tasks.Task 对象完成执行过程。
DownLoadTest dwtest = new DownLoadTest();
CancellationTokenSource cts = new CancellationTokenSource();
CancellationToken token = cts.Token;
var task1 = dwtest.DoRunTaskAsync("https://stackoverflow.com/", token);
var task2 = dwtest.DoRunTaskAsync("https://github.com/", token);
var task3 = dwtest.DoRunTaskAsync("https://www.google.com/", token);
Task[] tasks = new Task[] { task1, task2 , task3 };
Debug.WriteLine("task.Result等待结果打印");
Task.WaitAll(tasks,10000);
cts.Cancel();//超过10s时间取消运行
Console.WriteLine(task1.Status);
Console.WriteLine(task2.Status);
Console.WriteLine(task3.Status);
Debug.WriteLine(string.Format("主线程运行结束"));
Console.ReadKey();
PS:DownLoadTest中的代码查看前面的文章。
执行结果为: