委派(Delegate) 可讓您使用異步方式呼叫同步方法。 當您以同步方式呼叫委派時, Invoke 方法會直接在目前線程上呼叫目標方法。 如果呼叫BeginInvoke方法,Common Language Runtime (CLR) 會將要求排入執行緒,並馬上傳回給呼叫端。 目標方法會在執行緒池的執行緒上以非同步方式呼叫。 提交要求的原始線程可以自由地繼續與目標方法平行執行。 如果在呼叫 BeginInvoke 方法時指定回呼方法,則會在目標方法結束時呼叫回呼方法。 在回呼函式中,EndInvoke 方法會取得傳回值和任何輸入/輸出或僅輸出的參數。 如果在呼叫 BeginInvoke時未指定回呼方法, EndInvoke 可以從呼叫 BeginInvoke的線程呼叫 。
這很重要
編譯程式應該使用使用者指定的委派簽章,使用 Invoke、 BeginInvoke和 EndInvoke 方法發出委派類別。
BeginInvoke和 EndInvoke 方法應該標記為原生。 由於這些方法標示為原生,因此 CLR 會自動在類別載入時間提供實作。 載入器可確保它們不被覆蓋。
本節中
以異步方式呼叫同步方法
討論如何使用委派來對一般方法進行異步呼叫,並提供簡單的程式代碼範例,其中顯示等候異步呼叫傳回的四種方式。
相關區段
事件驅動非同步模式 (EAP)
描述 .NET 中的異步程序設計。