3:C#异步WaitAll的使用
2024-10-18 22:31:03
编写界面如图:
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 }
使用异步方法不一定都是 await,只有需要按序执行采用 await。上面的程序改成并发下载, Task.WaitAll 是等待所有任务完成。
最新文章
- java集合框架之Set
- SVN设置实例
- hdu 4112 Break the Chocolate(ceil floor)
- 结合daterangepicker实现Datatables表格带参数查询
- N!水题
- 执行npm安装模块的命令 Cannot find module
- 转化率最高的16个WordPress 电子商务主题
- jxls2.3-简明教程
- vue 使用axios 跨域请求数据的问题
- input表单的type属性详解,不同type不同属性之间区别
- parted分区和挂载及非交互式操作
- [转载]URL 源码分析
- 痞子衡嵌入式:开源软件协议(MIT/BSD/Apache/LGPL/MPL/GPL)
- Silverlight程序之修改命名空间
- 配置Beyond Compare作为比较和合并工具
- Puppet主机、模块、类、资源、变量、参数、标签命名规范
- svn 报错及解决
- 转asp.net中的App_GlobalResources和App_LocalResources使用
- sql主表分页查询关联子表取任意一条高效方案
- 给出a的定义 -- 指针 和 数组