ASP.NET 從執行緒池取得執行緒處理請求。同步頁面在 I/O 操作(呼叫 Web Service、查詢遠端資料庫)期間持有執行緒處於阻塞狀態,導致執行緒池耗盡,新請求排隊甚至回傳 503 錯誤。
此機制大幅提升 I/O 密集型應用的吞吐量與回應速度。
Async="true"。Page_Load 等早期事件呼叫 AddOnPreRenderCompleteAsync 註冊 Begin/End 方法:AddOnPreRenderCompleteAsync(
new BeginEventHandler(BeginCallWebService),
new EndEventHandler(EndCallWebService)
);
BeginCallWebService 發起非同步作業(如 WebRequest.BeginGetResponse),回傳 IAsyncResult;EndCallWebService 取得結果並儲存供 PreRenderComplete 階段使用。
1.x 需自行實作 IHttpAsyncHandler、管理自訂執行緒池、處理 ManualResetEvent 同步,極易出錯。2.0 內建基礎建設簡化為兩行註冊代碼,開發者專注於業務非同步邏輯。
Response.Write、Server.Transfer 等同步 API。