事件和回呼
更新:2007 年 11 月
回呼方法是一種呼叫,當某個作業或活動完成時,委派會自動叫用它。例如,其中一個非同步設計模式會使用 AsyncCallback 委派,指定當非同步作業完成時所要執行的程式碼。這個設計模式會用於 BeginWrite 方法,而此方法會使用回呼來處理非同步寫入作業的結果。
事件是與回呼類似的機制;事件可讓使用者指定的程式碼在特定情況下執行,通常與狀態變更或活動的開始或結束有關。事件要比回呼更容易使用,因為語言語法和工具可提供一致的程式碼撰寫經歷來識別及處理事件。此外,事件是由稱為事件處理常式的委派所處理 (這些處理常式具有定義完善的簽章模式)。如需事件的詳細資訊,請參閱事件設計。
下列方針可讓您確保程式庫設計有根據最佳作法來使用事件和回呼。
避免在重視效能的 API 中使用回呼。
雖然回呼和事件對許多開發人員而言較為容易瞭解及使用,但是從效能和記憶體耗用的觀點來看,它們比虛擬成員較不適合。
務必瞭解在呼叫委派時,也將會執行任意程式碼,而這樣可能會有安全性、正確性及相容性等方面的反彈。
事件和回呼可讓任意程式碼於 Common Language Runtime (CLR) 的內容中執行;您的程式碼和安全性檢閱應該要謹慎地檢查這些擴充性要點,以識別安全上的弱點。
Portions Copyright 2005 Microsoft Corporation.All rights reserved.
Portions Copyright Addison-Wesley Corporation.All rights reserved.
如需設計方針的詳細資訊,請參閱由 Krzysztof Cwalina 和 Brad Abrams 所著,並由 Addison-Wesley 於 2005 年發行的「Framework 設計方針:可重複使用之 .NET 程式庫的慣例、慣用語法和模式」一書。