c#中的事件清理

时间:2014-02-28 09:18:33

标签: c# events

假设我有两个对象A和B. A发布一个事件,B订阅此事件。我知道B可以使用 - = sintaxis取消订阅,但有没有办法让B从所有事件中取消链接而不一一去?

我知道A可以使用GetInvocationList方法遍历所有客户端,但我要求B.我正在考虑这样的事情,以确保B代码不再由于事件而被执行而且我我没有原谅任何事件。

感谢

1 个答案:

答案 0 :(得分:1)

虽然这只是B超过A时的一个问题,但它可能会发生。

唯一的方法是跟踪所有活动订阅。

对于活动提供者,有一个容易管理订阅者的类:EventHandlerList。您必须创建自己的管理订阅事件。

或者您可以使用Reactive Extensions (Rx)来管理活动订阅。