Async 和 Await 的异步编程

本文介绍了同步与异步的概念,指出异步编程能提升应用性能。C#中,异步编程主要由async和await关键字实现。通过一个示例,展示了异步方法的定义(async Task<int>),使用HttpClient异步获取字符串(GetStringAsync),以及await关键字如何在任务完成前挂起方法并获取结果。同时,说明在await等待期间,方法可以执行其他不依赖于异步结果的工作。
摘要由CSDN通过智能技术生成

在了解异步编程之前,我们先了解一下

什么是同步?什么是异步?

不管是同步还是异步,它们都是在客户端进行的。

同步就是指客户端提出了一个请求以后,在回应之前只能等待。

异步就是指客户端提出了一个请求以后,在回应之前还可以执行其他请求。

通俗点讲就是:

同步,一次干一件事;异步,一次可以同时干多件事。

异步编程模型

在了解完异步是什么后,异步编程的意思也很明了了。使用异步编程最明显的的效果就提高应用程序的性能和总体相应能力。

而C#异步编程的核心就是 asyns 和 await 这个两个关键字。

另外,使用 asyns 关键字定义的异步方法简称为“异步方法”。

下面我们来举个简单的例子,看看异步编程的架构模型是怎样的:

1处  的方法定义来看,它包含async修饰符,异步返回类型是Task<int>,方法名称用Async结尾。


2处  的Task<string> 类型的getStringTask,是用于创建 HttpClient(用于发送 HTTP 请求并从 URI 标识的资源接收 HTTP 响应)实例并调用 GetStringAsync异步方法以下载网站内容作为字符串。


3处  的await具体作用就是:在getStringTask完成之前,GetUrlContentLengthAsync是无法继续执行下去的。当getStringTask完成后,await会从getStringTask检索string类型(与getStringTask处的Task<string> 类型相呼应)的结果。


2和3处中间  的DoIndependentWork()方法调用,由于尚未等待 getStringTask,所以,GetUrlContentLengthAsync 可以继续执行不依赖于GetStringAsync 得出的最终结果的其他工作。

至此,本章完结

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值