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