没有合适的资源?快使用搜索试试~ 我知道了~
首页C#_5.0新特性:Async和Await使异步编程更简单.pdf
资源详情
资源评论
资源推荐

在之前 的 C# 基础知识系列文章中只介绍了 从 C#1. 0 到 C#4. 0 中主要的特性 , 然而 .NET 4.5 的
推出 , 对于 C# 又有了新特性的增加 —— 就是 C#5.0 中 async 和 await 两个关键字 , 这两个关
键字简化了异步编程 , 之所以简化了 , 还是因为编译器给我们做了更多的工作 , 下面就具体
看看编译器到底在背后帮我们做了哪些复杂的工作的。
AD : 2013 大数据全球技术峰会课程 PPT 下载
一、引言
在之前 的 C# 基础知识系列文章中只介绍了 从 C#1. 0 到 C#4. 0 中主要的特性 , 然而 .NET 4.5 的
推出 , 对于 C# 又有了新特性的增加 —— 就是 C#5.0 中 async 和 await 两个关键字 , 这两个关
键字简化了异步编程 , 之所以简化了 , 还是因为编译器给我们做了更多的工作 , 下面就具体
看看编译器到底在背后帮我们做了哪些复杂的工作的。
二、同步代码存在的问题
对于同步的代码 , 大家肯定都不陌生 , 因为我们平常写的代码大部分都是同步的 , 然而同步
代码却存在一个很严重的问题,例如我们向一个 Web 服务器发出一个请求时,如果我们发
出请求的代码是同步实现的话 , 这时候我们的应用程序就会处于等待状态 , 直到收回一个响
应信息为止 , 然而在这个等待的状态 , 对于用户不能操作任何的 UI 界面以及也没有任何的
消息,如果我们试图去操作界面时,此时我们就会看到 " 应用程序为响应 " 的信息 ( 在应用程
序的窗口旁 ) ,相信大家在平常使用桌面软件或者访问 web 的时候,肯定都遇到过这样类似
的情况的 , 对于这个 , 大家肯定会觉得看上去非常不舒服 。 引起这个原因正是因为代码的实
现是同步实现的 , 所以在没有得到一个响应消息之前 , 界面就成了一个 " 卡死 " 状态了 , 所以
这对于用户来说肯定是不可接受的 , 因为如果我要从服务器上下载一个很大的文件时 , 此时
我们甚至不能对窗体进行关闭的操作的。为了具体说明同步代码存在的问题 ( 造成界面开
始 ) ,下面通过一个程序让大家更形象地看下问题所在:
// 单击事件
private void btnClick_Click(object sender, EventArgs e)
{
this.btnClick.Enabled = false;
long length = AccessWeb();
this.btnClick.Enabled = true;
// 这里可以做一些不依赖回复的操作
OtherWork();
this.richTextBox1.Text += String.Format(" 回复的字节长度为 : {0}.",
length);
txbMainThreadID.Text = Thread.CurrentThread.ManagedThreadId.ToString();
}
private long AccessWeb()
{
MemoryStream content = new MemoryStream();


















安全验证
文档复制为VIP权益,开通VIP直接复制

评论1