狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

C# 異步編程入門:Task、Task<TResult>、async 和 await

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

摘要


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

正文


現代應用程序廣泛使用文件和網絡 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-2025 ClickSun All Rights Reserved