事件和回调

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

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

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

在允许用户提供自定义代码以供 Framework 执行时,应考虑使用回调。

在允许用户自定义框架的行为而无需用户了解对象环境时,应考虑使用事件。

优先选择使用事件而非普通回调,因为更多的开发人员较为熟悉事件,并且事件已与 Visual Studio 语句完成功能集成。

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

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

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

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

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

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

设计指引的详细信息,请参阅"框架设计准则: 公约、 成语和可重复使用的模式。网络图书馆"书 Krzysztof Cwalina 和布拉德 · 艾布拉姆斯,2005年艾迪生 - 韦斯利,发表。

请参见

其他资源

扩展性设计

类库开发的设计准则