作者序
非同步程式設計早已不是少數系統才會碰到的進階議題。今天無論是桌面應用程式、Web API、背景服務,還是雲端系統中的資料處理流程,只要牽涉到 I/O、併發工作或回應速度的要求,幾乎都離不開 Task、async/await 與各種相關機制。然而,真正讓人感到困難的,往往不是語法本身,而是背後那些不容易直接看見的執行流程、資源調度與設計取捨。
這本書採取「理解優先」的方式編寫。考慮到目前普遍利用 AI 助手寫程式的情況,我希望讀者即使沒有真的親手輸入程式碼,光是閱讀書中的講解,也能從中獲益。特別是前面三章,我認為有助於奠定非同步程式設計的基礎觀念,並釐清常見疑問。越往後面的章節,實戰成分與 .NET API 的介紹會越來越多。
在 AI 已經能夠迅速產生大量程式碼的今天,我認為這種理解能力依然很重要。AI 的確可以幫我們加快開發速度、產生樣板程式,甚至提出看似合理的解法;但它無法替你承擔產品品質的責任,也不能完全取代工程師在設計、驗證與取捨上的判斷。非同步與併發問題常常不是「能不能跑」而已,而是牽涉到正確性、可維護性、延展性與效能。當問題出現時,最後必須負責理解、追查與修正的人依然是開發者。
從第四章開始,本書會進入實戰相關議題,包括例外處理、取消工作、競爭狀況、死結、執行緒安全、不可變設計、平行處理,以及非同步資料流等主題。此外,本書也會介紹 .NET 在這些場景下提供的關鍵工具與 API,例如執行緒安全的集合型別、不可變集合、Parallel 類別、PLINQ、IAsyncEnumerable<T> 與 Channel 等,並說明它們各自擅長解決什麼問題,以及在什麼情況下應該避免濫用。
如果你正在閱讀這本書,我相信你多半已經意識到,非同步程式設計不是一項可有可無的附加技能,而是現代 .NET 開發者的重要基本能力。無論你是想補強觀念、整理零散知識,還是希望更有把握地與 AI 協作並審閱其產出,我都希望本書能提供一些幫助。
持續學習,投資自己。
蔡煥麟 (2026 年 3 月)