C# 并发编程 WhenAll()

using System;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Net.Http;
using System.Collections.Generic;
using System.Linq;

namespace async_WhenAny
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private async void button1_Click(object sender, EventArgs e)
        {
            List<string> Urls = new List<string>();
            Urls.Add("http://www.baidu.com");
            Urls.Add("http://www.sohu.com/");
            string a = await DownloadAllAsync(Urls);
            label1.Text = a;
        }
  
        static async Task<string> DownloadAllAsync(List<string> urls)
        {
            using (var httpClient = new HttpClient())
            {
                // 定义每一个url 的使用方法。
                var downloads = urls.Select(url => httpClient.GetStringAsync(url));
                // 注意,到这里,序列还没有求值,所以所有任务都还没真正启动。
                // 下面,所有的URL 下载同步开始。
                Task<string>[] downloadTasks = downloads.ToArray();
                // 到这里,所有的任务已经开始执行了。
                // 用异步方式等待所有下载完成。
                string[] htmlPages = await TaskEx.WhenAll(downloadTasks);
                return string.Concat(htmlPages);
            }
                
            
        }
    }
}
 

参考书籍: C#并发编程实例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值