在了解异步编程之前,我们先了解一下
什么是同步?什么是异步?
不管是同步还是异步,它们都是在客户端进行的。
同步就是指客户端提出了一个请求以后,在回应之前只能等待。
异步就是指客户端提出了一个请求以后,在回应之前还可以执行其他请求。
通俗点讲就是:
同步,一次干一件事;异步,一次可以同时干多件事。
异步编程模型
在了解完异步是什么后,异步编程的意思也很明了了。使用异步编程最明显的的效果就提高应用程序的性能和总体相应能力。
而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 得出的最终结果的其他工作。
至此,本章完结