首页 > 其他分享 >异步任务队列

异步任务队列

时间:2023-02-01 00:11:59浏览次数:46  
标签:异步 Task Users 队列 Desktop 任务 ReadAllTextAsync async txt

异步任务队列

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);
        }

结果是永远只有一个值被拿到就打印了

标签:异步,Task,Users,队列,Desktop,任务,ReadAllTextAsync,async,txt
From: https://www.cnblogs.com/long-live/p/cc.html

相关文章