LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

C# 異步編程入門(mén):Task、Task<TResult>、async 和 await

admin
2024年3月28日 22:3 本文熱度 1491

摘要


在面向服務(wù)的系統(tǒng)中,各個(gè)子系統(tǒng)之間通常采用異步方式進(jìn)行通信,例如訂單系統(tǒng)與支付系統(tǒng)之間的通信,以及現(xiàn)實(shí)生活中你在餐廳點(diǎn)菜、下單、做事、上菜、吃飯的過(guò)程,這些都是異步的。異步的工作流可以同時(shí)進(jìn)行,因此它能夠提高效率。現(xiàn)在的掃碼點(diǎn)餐就是一個(gè)很好的異步例子,它將顧客點(diǎn)餐與廚師制作菜品的過(guò)程分離,使得這兩個(gè)過(guò)程可以同時(shí)進(jìn)行,從而提高了效率。在同步的世界里,工作流簡(jiǎn)單易懂,但效率卻非常低。

正文


現(xiàn)代應(yīng)用程序廣泛使用文件和網(wǎng)絡(luò) I/O。I/O 相關(guān) api 傳統(tǒng)上默認(rèn)是阻塞的,導(dǎo)致用戶(hù)體驗(yàn)和硬件利用率不佳,此類(lèi)問(wèn)題的學(xué)習(xí)和編碼的難度也較大。而今基于 Task 的異步 API 和語(yǔ)言級(jí)異步編程模式顛覆了傳統(tǒng)模式,使得異步編程非常簡(jiǎn)單,幾乎沒(méi)有新的概念需要學(xué)習(xí)。

異步代碼有如下特點(diǎn):

  • 在等待 I/O 請(qǐng)求返回的過(guò)程中,通過(guò)讓出線程來(lái)處理更多的服務(wù)器請(qǐng)求。

  • 通過(guò)在等待 I/O 請(qǐng)求時(shí)讓出線程進(jìn)行 UI 交互,并將長(zhǎng)期運(yùn)行的工作過(guò)渡到其他 CPU,使用戶(hù)界面的響應(yīng)性更強(qiáng)。

  • 許多較新的 .net API 都是異步的。

  • 在 .NET 中編寫(xiě)異步代碼很容易。


使用 .NET 基于 Task 的異步模型可以直接編寫(xiě) I/O 和 CPU 受限的異步代碼。該模型圍繞著Task和Task<T>類(lèi)型以及 C# 的async和await關(guān)鍵字展開(kāi)。本文將講解如何使用 .NET 異步編程及一些相關(guān)基礎(chǔ)知識(shí)。

.NET Framework 提供了一個(gè)基于任務(wù)的異步模式 (TAP),它是構(gòu)建異步操作的推薦方式。這種模式使用 System.Threading.Tasks.Task 和 System.Threading.Tasks.Task<TResult> 類(lèi)來(lái)代表異步操作。這種模式不僅適用于 I/O 操作,還適用于那些可能會(huì)阻塞主線程的長(zhǎng)時(shí)間運(yùn)行的計(jì)算操作。通過(guò)使用 TAP,開(kāi)發(fā)者可以編寫(xiě)出更加簡(jiǎn)潔、易于理解和維護(hù)的異步代碼。

基本概念

  • Task: 代表一個(gè)異步操作。Task 類(lèi)提供了一種方式來(lái)運(yùn)行某些操作,并在操作完成時(shí)通知應(yīng)用程序。對(duì)于無(wú)返回值的異步操作,使用 Task 類(lèi)。

  • Task<TResult>: 繼承自 Task,代表有返回值的異步操作。TResult 是操作完成時(shí)返回的結(jié)果類(lèi)型。


編寫(xiě)異步代碼

  1. 使用 async 和 await 關(guān)鍵字: .NET 引入了 async 和 await 關(guān)鍵字簡(jiǎn)化異步編程。標(biāo)記為 async 的方法稱(chēng)為異步方法,這些方法中可以使用 await 關(guān)鍵字等待異步操作的完成,而不會(huì)阻塞調(diào)用線程。

  2. 啟動(dòng)異步操作: 可以通過(guò)調(diào)用返回 Task 或 Task<TResult> 的方法來(lái)啟動(dòng)異步操作。如果方法支持異步版本,它通常以 "Async" 結(jié)尾。

  3. 等待異步操作完成: 在異步方法中,可以使用 await 關(guān)鍵字等待異步操作的完成,await 會(huì)暫停當(dāng)前方法的執(zhí)行,直到等待的 Task 完成,然后繼續(xù)執(zhí)行方法的剩余部分。期間,調(diào)用線程不會(huì)被阻塞,可以繼續(xù)執(zhí)行其他工作。

注意:異步不能提高單一業(yè)務(wù)的速度。


該文章在 2024/3/28 22:03:19 編輯過(guò)
關(guān)鍵字查詢(xún)
相關(guān)文章
正在查詢(xún)...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專(zhuān)業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車(chē)隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類(lèi)企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷(xiāo)售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶(hù)的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
在线中文字幕亚洲无线码 | 午夜福利免费区在线观看手机 | 亚洲第一AV片在线观看 | 中文字幕在线亚洲日韩6页 亚洲亚洲影院第一页 | 欧美激情综合在线三区 | 乱子伦国产对白在线播放 |