LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

C# 异步编程入门:Task、Task<TResult>、async 和 await

admin
2024年3月28日 22:3 本文热度 723

摘要


在面向服务的系统中,各个子系统之间通常采用异步方式进行通信,例如订单系统与支付系统之间的通信,以及现实生活中你在餐厅点菜、下单、做事、上菜、吃饭的过程,这些都是异步的。异步的工作流可以同时进行,因此它能够提高效率。现在的扫码点餐就是一个很好的异步例子,它将顾客点餐与厨师制作菜品的过程分离,使得这两个过程可以同时进行,从而提高了效率。在同步的世界里,工作流简单易懂,但效率却非常低。

正文


现代应用程序广泛使用文件和网络 I/O。I/O 相关 api 传统上默认是阻塞的,导致用户体验和硬件利用率不佳,此类问题的学习和编码的难度也较大。而今基于 Task 的异步 API 和语言级异步编程模式颠覆了传统模式,使得异步编程非常简单,几乎没有新的概念需要学习。

异步代码有如下特点:

  • 在等待 I/O 请求返回的过程中,通过让出线程来处理更多的服务器请求。

  • 通过在等待 I/O 请求时让出线程进行 UI 交互,并将长期运行的工作过渡到其他 CPU,使用户界面的响应性更强。

  • 许多较新的 .net API 都是异步的。

  • 在 .NET 中编写异步代码很容易。


使用 .NET 基于 Task 的异步模型可以直接编写 I/O 和 CPU 受限的异步代码。该模型围绕着Task和Task<T>类型以及 C# 的async和await关键字展开。本文将讲解如何使用 .NET 异步编程及一些相关基础知识。

.NET Framework 提供了一个基于任务的异步模式 (TAP),它是构建异步操作的推荐方式。这种模式使用 System.Threading.Tasks.Task 和 System.Threading.Tasks.Task<TResult> 类来代表异步操作。这种模式不仅适用于 I/O 操作,还适用于那些可能会阻塞主线程的长时间运行的计算操作。通过使用 TAP,开发者可以编写出更加简洁、易于理解和维护的异步代码。

基本概念

  • Task: 代表一个异步操作。Task 类提供了一种方式来运行某些操作,并在操作完成时通知应用程序。对于无返回值的异步操作,使用 Task 类。

  • Task<TResult>: 继承自 Task,代表有返回值的异步操作。TResult 是操作完成时返回的结果类型。


编写异步代码

  1. 使用 async 和 await 关键字: .NET 引入了 async 和 await 关键字简化异步编程。标记为 async 的方法称为异步方法,这些方法中可以使用 await 关键字等待异步操作的完成,而不会阻塞调用线程。

  2. 启动异步操作: 可以通过调用返回 Task 或 Task<TResult> 的方法来启动异步操作。如果方法支持异步版本,它通常以 "Async" 结尾。

  3. 等待异步操作完成: 在异步方法中,可以使用 await 关键字等待异步操作的完成,await 会暂停当前方法的执行,直到等待的 Task 完成,然后继续执行方法的剩余部分。期间,调用线程不会被阻塞,可以继续执行其他工作。

注意:异步不能提高单一业务的速度。


该文章在 2024/3/28 22:03:19 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved