事件和回调

更新:2007 年 11 月

回调方法是一种在操作或活动完成时由委托自动调用的方法。例如,某一异步设计模式使用 AsyncCallback 委托指定在异步操作完成时执行的代码。该设计模式用在 BeginWrite 方法中,该方法使用回调处理异步写操作的结果。

事件是与回调类似的机制。事件允许在特定的情况下执行用户指定的代码,这些情况通常涉及状态更改或活动的开始或结束。事件比回调易于使用,因为语言语法和工具为识别和处理事件提供了统一的编码做法。此外,事件由称为事件处理程序的委托处理,这些委托具有定义完善的签名模式。有关事件的更多信息,请参见事件设计

下列准则可帮助确保您的库设计根据最佳做法使用事件和回调。

避免在对性能敏感的 API 中使用回调。

尽管回调和事件对于许多开发人员来说更易于理解和使用,但从性能和内存消耗的角度看,它们不如虚成员可取。

要了解调用委托将会执行任意代码,这可能会造成安全性、正确性和兼容性方面的问题。

事件和回调允许在公共语言运行库 (CLR) 的上下文中执行任意代码。在检查代码和安全性时,要仔细检查这些扩展点以确定是否存在安全漏洞。

部分版权所有 2005 Microsoft Corporation。保留所有权利。

部分版权所有 Addison-Wesley Corporation。保留所有权利。

有关设计指南的更多信息,请参见 Krzysztof Cwalina 和 Brad Abrams 编著、Addison-Wesley 于 2005 年出版的“Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries”(《框架设计指南:可重用 .NET 库的约定、术语和模式》)。

请参见

其他资源

扩展性设计

类库开发的设计准则