基于任务的异步模式(TAP)
2016-07-11 17:59
615 查看
Task
.net 4.0为我们带来了Task的异步,我们有以下三种方法创建Task。1,Task.Factory.StartNew,比较常用。
2,Task.Run,是.net 4.5中增加的。
3,Task.FromResult,如果结果是已计算,就可以使用这种方法来创建任务。
下面就以Task.Factory.StartNew继续来实现前面的那个例子,代码如下。
1 /// <summary> 2 /// 使用async/await 3 /// </summary> 4 /// <param name="sender"></param> 5 /// <param name="e"></param> 6 private async void button5_Click(object sender, EventArgs e) 7 { 8 this.richTextBox1.Text = "正在处理请求..."; 9 10 await DoWorkAsync(); 11 } 12 13 public async Task DoWorkAsync() 14 { 15 var url = this.textBox1.Text.Trim(); 16 var request = HttpWebRequest.Create(url); 17 var response = request.GetResponse(); 18 var stream = response.GetResponseStream(); 19 using (StreamReader reader = new StreamReader(stream)) 20 { 21 var content = reader.ReadToEnd(); 22 this.richTextBox1.Text = content; 23 } 24 }
View Code
有以下疑问:
1,看起来使用了async,UI线程还是会阻塞?
2,使用async并没有创建一个新的线程?
相关文章推荐
- C#先执行一段sql等后台操作后再提示是否后续操作confrim
- [Effective JavaScript 笔记]第6章:库和API设计--个人总结
- REDIS 在电商中的实际应用场景(转)
- 机器学习必看的28个视频
- 数字在排序数组中出现的次数
- 全局区 代码区 堆区 栈区
- Python读取MNIST文件
- 使用Mac OS X终端SSH登录远程服务器
- mybatis源码学习: 编译的方法
- MapReduce -- 统计天气信息
- smbusers
- Unity3d当鼠标移动到按钮上,按钮做出响应动画
- ubuntu 下vim安装、配置和插件的添加使用
- curl模拟post请求提交
- SESSION 数据入库
- smb.conf
- iBatis 代码自动生成工具 iBator 及 Example 使用
- 递归.
- POJ 1833 排列(字典序全排列、next_permutation()、copy+流迭代器)
- vue.js数据绑定语法