异步任务队列
异步任务队列
Task.WhenAll(List<Task>)等List中所有的异步任务完成后才算完成
Task.WhenAny(List<Task>)List中某个完成就完成
较常用的是Task.WhenAll(List<Task>)
不await去执行读取三个文件内容的异步操作,将它们都放到Task.WhenAll()中,等它们都完成后输出结果
static async Task Main(string[] args)
{
Task<string> t1 = File.ReadAllTextAsync(@"C:\Users\张跑跑\Desktop\net\async\1.txt");
Task<string> t2 = File.ReadAllTextAsync(@"C:\Users\张跑跑\Desktop\net\async\2.txt");
Task<string> t3 = File.ReadAllTextAsync(@"C:\Users\张跑跑\Desktop\net\async\3.txt");
string[] strs = await Task.WhenAll(t1, t2, t3);
foreach (var item in strs)
{
Console.WriteLine(item);
}
}
结果是
改成使用WhenAny(),等它们都完成后输出结果
static async Task Main(string[] args)
{
Task<string> t1 = File.ReadAllTextAsync(@"C:\Users\张跑跑\Desktop\net\async\1.txt");
Task<string> t2 = File.ReadAllTextAsync(@"C:\Users\张跑跑\Desktop\net\async\2.txt");
Task<string> t3 = File.ReadAllTextAsync(@"C:\Users\张跑跑\Desktop\net\async\3.txt");
var strs = await Task.WhenAny(t1, t2, t3);
Console.WriteLine(strs);
}
结果是永远只有一个值被拿到就打印了