使用委派非同步設計程式
更新:2007 年 11 月
委派 (Delegate) 可讓您以非同步方式呼叫同步方法。同步呼叫委派時,Invoke 方法會在目前的執行緒上直接呼叫目標方法。如果呼叫 BeginInvoke 方法,則 Common Language Runtime (CLR) 會將要求放進佇列,並立即傳回給呼叫端。在執行緒集區的執行緒上,隨即以非同步方式呼叫目標方法。送出要求的原始執行緒可與目標方法無限制地持續平行執行。如果在 BeginInvoke 方法的呼叫中指定了回呼 (Callback) 方法,則當目標方法結束時,即會呼叫此回呼方法。在此回呼方法中,EndInvoke 方法會取得傳回值和任何輸入/輸出或僅能輸出的參數。如果在呼叫 BeginInvoke 時未指定任何回呼方法,則可以從稱為 BeginInvoke 的執行緒呼叫 EndInvoke。
重要事項: |
---|
編譯器 (Compiler) 應該使用使用者指定的委派簽章,搭配 Invoke、BeginInvoke 和 EndInvoke 方法來發出委派類別。BeginInvoke 和 EndInvoke 方法應該裝飾為原生 (Native)。因為這些方法被標記為原生,所以 CLR 在類別載入期間會自動提供實作。載入器將確保它們不會被覆寫。 |
在本節中
以非同步的方式呼叫同步方法
討論如何使用委派以非同步方式呼叫一般方法,並提供簡單的程式碼範例,示範四種等待非同步呼叫傳回的方式。非同步委派程式設計範例
以較為複雜的程式碼範例示範如何使用委派進行非同步呼叫,這範例會將一些數字因數分解。
相關章節
- 非同步程式設計模式
描述使用 .NET Framework 進行的非同步程式設計。