3:C#异步WaitAll的使用-阿里云开发者社区

开发者社区> 开发与运维> 正文

3:C#异步WaitAll的使用

简介: 编写界面如图: private async void button1_Click(object sender, EventArgs e) { #region 单个执行的异步,效率慢 HttpClient wc = new HttpClient(); string s1 = await wc.

编写界面如图:

private async void button1_Click(object sender, EventArgs e)
        {
            #region 单个执行的异步,效率慢
            HttpClient wc = new HttpClient();
            string s1 = await wc.GetStringAsync(textBox1.Text);
            label1.Text = s1.Length.ToString();
            string s2 = await wc.GetStringAsync(textBox2.Text);
            label2.Text = s2.Length.ToString();
            string s3 = await wc.GetStringAsync(textBox3.Text);
            label3.Text = s3.Length.ToString();
            #endregion

            #region 并发全部完成的异步更快
            HttpClient hc = new HttpClient();
            var task1 = hc.GetStringAsync(textBox1.Text);
            var task2 = hc.GetStringAsync(textBox2.Text);
            var task3 = hc.GetStringAsync(textBox3.Text);
            Task.WaitAll(task1, task2, task3);
            label1.Text = task1.Result.Length.ToString();
            label2.Text = task2.Result.Length.ToString();
            label3.Text = task3.Result.Length.ToString();
            #endregion

        }
View Code

使用异步方法不一定都是 await,只有需要按序执行采用 await。上面的程序改成并发下载, Task.WaitAll 是等待所有任务完成。

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章